X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fbonding%2Fnode.h;h=9a194b8db0b838e11af7d1654ee8a74349fbad8a;hb=e63325e3ca03c847963863446345e6c80a2c0cfd;hp=6b13a46a35544357ecb74d655102d169b4e437c0;hpb=c4e99c5d6f19cf7c026b021266e309f29de1ac7f;p=vpp.git diff --git a/src/vnet/bonding/node.h b/src/vnet/bonding/node.h index 6b13a46a355..9a194b8db0b 100644 --- a/src/vnet/bonding/node.h +++ b/src/vnet/bonding/node.h @@ -32,7 +32,7 @@ #endif #define BOND_MODULO_SHORTCUT(a) \ - (((a) == 2) || ((a) == 4) || ((a) == 8) || ((a) == 16)) + (is_pow2 (a)) #define foreach_bond_mode \ _ (1, ROUND_ROBIN, "round-robin") \ @@ -51,13 +51,13 @@ typedef enum /* configurable load-balances */ #define foreach_bond_lb \ _ (2, L23, "l23", l23) \ - _ (1, l34 , "l34", l34) \ + _ (1, L34 , "l34", l34) \ _ (0, L2, "l2", l2) /* load-balance functions implemented in bond-output */ #define foreach_bond_lb_algo \ _ (0, L2, "l2", l2) \ - _ (1, l34 , "l34", l34) \ + _ (1, L34 , "l34", l34) \ _ (2, L23, "l23", l23) \ _ (3, RR, "round-robin", round_robin) \ _ (4, BC, "broadcast", broadcast) \ @@ -70,13 +70,14 @@ typedef enum #undef _ } bond_load_balance_t; -enum +typedef enum { BOND_SEND_GARP_NA = 1, } bond_send_garp_na_process_event_t; typedef struct { + u32 id; u8 hw_addr_set; u8 hw_addr[6]; u8 mode; @@ -112,6 +113,7 @@ typedef struct typedef struct { u32 sw_if_index; + u32 id; u8 interface_name[64]; u8 mode; u8 lb; @@ -158,7 +160,12 @@ typedef struct /* the last slave index for the rr lb */ u32 lb_rr_last_index; + /* Real device instance in interface vector */ u32 dev_instance; + + /* Interface ID being shown to user */ + u32 id; + u32 hw_if_index; u32 sw_if_index; @@ -297,6 +304,9 @@ typedef struct /* pool of bonding interfaces */ bond_if_t *interfaces; + /* record used interface IDs */ + uword *id_used; + /* pool of slave interfaces */ slave_if_t *neighbors;