X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=src%2Fvnet%2Finterface.c;h=a9346a2b072c0cf1a492fb16c4796bb19f1d61e4;hp=34ad292a728ac208970140d5ad85c8eb3ee6bca6;hb=17ff3c1;hpb=65784c1602c7c8171effd00384f65f546d93a13b diff --git a/src/vnet/interface.c b/src/vnet/interface.c index 34ad292a728..a9346a2b072 100644 --- a/src/vnet/interface.c +++ b/src/vnet/interface.c @@ -1042,8 +1042,9 @@ vnet_hw_interface_walk_sw (vnet_main_t * vnm, u32 id, sw_if_index; hi = vnet_get_hw_interface (vnm, hw_if_index); - /* the super first, then the and sub interfaces */ - fn (vnm, hi->sw_if_index, ctx); + /* the super first, then the sub interfaces */ + if (WALK_STOP == fn (vnm, hi->sw_if_index, ctx)) + return; /* *INDENT-OFF* */ hash_foreach (id, sw_if_index, @@ -1055,6 +1056,24 @@ vnet_hw_interface_walk_sw (vnet_main_t * vnm, /* *INDENT-ON* */ } +void +vnet_hw_interface_walk (vnet_main_t * vnm, + vnet_hw_interface_walk_t fn, void *ctx) +{ + vnet_interface_main_t *im; + vnet_hw_interface_t *hi; + + im = &vnm->interface_main; + + /* *INDENT-OFF* */ + pool_foreach (hi, im->hw_interfaces, + ({ + if (WALK_STOP == fn(vnm, hi->hw_if_index, ctx)) + break; + })); + /* *INDENT-ON* */ +} + void vnet_sw_interface_walk (vnet_main_t * vnm, vnet_sw_interface_walk_t fn, void *ctx) @@ -1257,7 +1276,8 @@ int vnet_sw_interface_is_p2p (vnet_main_t * vnm, u32 sw_if_index) { vnet_sw_interface_t *si = vnet_get_sw_interface (vnm, sw_if_index); - if (si->type == VNET_SW_INTERFACE_TYPE_P2P) + if ((si->type == VNET_SW_INTERFACE_TYPE_P2P) || + (si->type == VNET_SW_INTERFACE_TYPE_PIPE)) return 1; vnet_hw_interface_t *hw = vnet_get_sup_hw_interface (vnm, sw_if_index);