Print this page
Interpret sl3a_uport == 0 in SVP_R_VL3_ACK to indicate the VL3 IP is a
next-hop router.


 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