260 svp_route_lookup_f scb_route_lookup;
261 } svp_cb_t;
262
263 /*
264 * Core implementation structure.
265 */
266 struct svp {
267 overlay_plugin_dest_t svp_dest; /* RO */
268 varpd_provider_handle_t *svp_hdl; /* RO */
269 svp_cb_t svp_cb; /* RO */
270 uint64_t svp_vid; /* RO */
271 avl_node_t svp_rlink; /* Owned by svp_remote */
272 svp_remote_t *svp_remote; /* RO iff started */
273 mutex_t svp_lock;
274 char *svp_host; /* svp_lock */
275 uint16_t svp_port; /* svp_lock */
276 uint16_t svp_uport; /* svp_lock */
277 uint32_t svp_dcid; /* svp_lock (but write-once?) */
278 boolean_t svp_huip; /* svp_lock */
279 struct in6_addr svp_uip; /* svp_lock */
280 struct ether_addr svp_router_mac; /* svp_lock (but write-once?) */
281 };
282
283 extern bunyan_logger_t *svp_bunyan;
284
285 extern int svp_remote_find(char *, uint16_t, struct in6_addr *,
286 svp_remote_t **);
287 extern int svp_remote_attach(svp_remote_t *, svp_t *);
288 extern void svp_remote_detach(svp_t *);
289 extern void svp_remote_release(svp_remote_t *);
290 extern void svp_remote_vl3_lookup(svp_t *, svp_query_t *,
291 const struct sockaddr *, void *);
292 extern void svp_remote_vl2_lookup(svp_t *, svp_query_t *, const uint8_t *,
293 void *);
294 extern void svp_remote_route_lookup(svp_t *, svp_query_t *,
295 const struct in6_addr *, const struct in6_addr *, uint32_t,
296 uint16_t, void *);
297
298
299 /*
300 * Init functions
|
260 svp_route_lookup_f scb_route_lookup;
261 } svp_cb_t;
262
263 /*
264 * Core implementation structure.
265 */
266 struct svp {
267 overlay_plugin_dest_t svp_dest; /* RO */
268 varpd_provider_handle_t *svp_hdl; /* RO */
269 svp_cb_t svp_cb; /* RO */
270 uint64_t svp_vid; /* RO */
271 avl_node_t svp_rlink; /* Owned by svp_remote */
272 svp_remote_t *svp_remote; /* RO iff started */
273 mutex_t svp_lock;
274 char *svp_host; /* svp_lock */
275 uint16_t svp_port; /* svp_lock */
276 uint16_t svp_uport; /* svp_lock */
277 uint32_t svp_dcid; /* svp_lock (but write-once?) */
278 boolean_t svp_huip; /* svp_lock */
279 struct in6_addr svp_uip; /* svp_lock */
280 /* NOTE: lower-3 bytes are 0s. */
281 uint8_t svp_router_oui[6]; /* svp_lock (but write-once?) */
282 };
283
284 extern bunyan_logger_t *svp_bunyan;
285
286 extern int svp_remote_find(char *, uint16_t, struct in6_addr *,
287 svp_remote_t **);
288 extern int svp_remote_attach(svp_remote_t *, svp_t *);
289 extern void svp_remote_detach(svp_t *);
290 extern void svp_remote_release(svp_remote_t *);
291 extern void svp_remote_vl3_lookup(svp_t *, svp_query_t *,
292 const struct sockaddr *, void *);
293 extern void svp_remote_vl2_lookup(svp_t *, svp_query_t *, const uint8_t *,
294 void *);
295 extern void svp_remote_route_lookup(svp_t *, svp_query_t *,
296 const struct in6_addr *, const struct in6_addr *, uint32_t,
297 uint16_t, void *);
298
299
300 /*
301 * Init functions
|