diff options
author | Neale Ranns <neale.ranns@cisco.com> | 2018-07-04 10:24:24 -0700 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2018-07-07 16:06:34 +0000 |
commit | 17ff3c1fa5687255a118c53223fa2cd49132d929 (patch) | |
tree | 874a3fbf5bed5408f9f9c84546a3b95df62ead79 /src/vnet/interface.c | |
parent | 65784c1602c7c8171effd00384f65f546d93a13b (diff) |
Pipes
A pipe resembles a unix pipe. Each end of the pipe is a full
VPP interface.
pipes can be used for e.g. packet recirculation, inter-BD, etc.
Change-Id: I185bb9fb43dd233ff45da63ac1b85ae2e1ceca16
Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
Diffstat (limited to 'src/vnet/interface.c')
-rw-r--r-- | src/vnet/interface.c | 26 |
1 files changed, 23 insertions, 3 deletions
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, @@ -1056,6 +1057,24 @@ vnet_hw_interface_walk_sw (vnet_main_t * vnm, } 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); |