]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/zebra_vxlan_private.h
isisd: implement the 'lsp-too-large' notification
[mirror_frr.git] / zebra / zebra_vxlan_private.h
index e86967041b2e6daeb72466182093d7c2b0e74da7..3be7dc012ac2839bb4939f258c25a84c4e0e2495 100644 (file)
@@ -249,6 +249,10 @@ struct zebra_mac_t_ {
 #define ZEBRA_MAC_DEF_GW  0x20
 /* remote VTEP advertised MAC as default GW */
 #define ZEBRA_MAC_REMOTE_DEF_GW        0x40
+#define ZEBRA_MAC_DUPLICATE 0x80
+
+       /* back pointer to zvni */
+       zebra_vni_t     *zvni;
 
        /* Local or remote info. */
        union {
@@ -260,11 +264,24 @@ struct zebra_mac_t_ {
                struct in_addr r_vtep_ip;
        } fwd_info;
 
+       /* Mobility sequence numbers associated with this entry. */
+       uint32_t rem_seq;
+       uint32_t loc_seq;
+
        /* List of neigh associated with this mac */
        struct list *neigh_list;
 
        /* list of hosts pointing to this remote RMAC */
        struct host_rb_tree_entry host_rb;
+
+       /* Duplicate mac detection */
+       uint32_t dad_count;
+
+       struct thread *dad_mac_auto_recovery_timer;
+
+       struct timeval detect_start_time;
+
+       time_t dad_dup_detect_time;
 };
 
 /*
@@ -288,6 +305,7 @@ struct mac_walk_ctx {
        struct vty *vty;          /* Used by VTY handlers */
        uint32_t count;           /* Used by VTY handlers */
        struct json_object *json; /* Used for JSON Output */
+       bool print_dup; /* Used to print dup addr list */
 };
 
 struct rmac_walk_ctx {
@@ -326,20 +344,42 @@ struct zebra_neigh_t_ {
        /* Underlying interface. */
        ifindex_t ifindex;
 
+       zebra_vni_t *zvni;
+
        uint32_t flags;
 #define ZEBRA_NEIGH_LOCAL     0x01
 #define ZEBRA_NEIGH_REMOTE    0x02
 #define ZEBRA_NEIGH_REMOTE_NH    0x04 /* neigh entry for remote vtep */
 #define ZEBRA_NEIGH_DEF_GW    0x08
 #define ZEBRA_NEIGH_ROUTER_FLAG 0x10
+#define ZEBRA_NEIGH_DUPLICATE 0x20
 
        enum zebra_neigh_state state;
 
        /* Remote VTEP IP - applicable only for remote neighbors. */
        struct in_addr r_vtep_ip;
 
+       /*
+        * Mobility sequence numbers associated with this entry. The rem_seq
+        * represents the sequence number from the client (BGP) for the most
+        * recent add or update of this entry while the loc_seq represents
+        * the sequence number informed (or to be informed) by zebra to BGP
+        * for this entry.
+        */
+       uint32_t rem_seq;
+       uint32_t loc_seq;
+
        /* list of hosts pointing to this remote NH entry */
        struct host_rb_tree_entry host_rb;
+
+       /* Duplicate ip detection */
+       uint32_t dad_count;
+
+       struct thread *dad_ip_auto_recovery_timer;
+
+       struct timeval detect_start_time;
+
+       time_t dad_dup_detect_time;
 };
 
 /*