diff options
author | AkshayaNadahalli <anadahal@cisco.com> | 2017-01-23 22:05:35 +0530 |
---|---|---|
committer | AkshayaNadahalli <anadahal@cisco.com> | 2017-03-07 14:08:22 +0000 |
commit | 1b563527c143903b6e7e79b5978af5310372f605 (patch) | |
tree | 7b673272cb930e03b77dd376f581d903c219a566 /src/vnet/ip/ip6_hop_by_hop.h | |
parent | 066f034b903bda6e938bec1b12f01edef65ee9c4 (diff) |
In-band OAM active probe (VPP-471)
Change-Id: Icf0ddf76ba1c8b588c79387284cd0349ebc6e45f
Signed-off-by: AkshayaNadahalli <anadahal@cisco.com>
Diffstat (limited to 'src/vnet/ip/ip6_hop_by_hop.h')
-rw-r--r-- | src/vnet/ip/ip6_hop_by_hop.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/vnet/ip/ip6_hop_by_hop.h b/src/vnet/ip/ip6_hop_by_hop.h index 9574f0a5ecc..5f12f647dba 100644 --- a/src/vnet/ip/ip6_hop_by_hop.h +++ b/src/vnet/ip/ip6_hop_by_hop.h @@ -230,6 +230,42 @@ ioam_flow_add (u8 encap, u8 * flow_name) return (index); } +always_inline ip6_hop_by_hop_option_t * +ip6_hbh_get_option (ip6_hop_by_hop_header_t * hbh0, u8 option_to_search) +{ + ip6_hop_by_hop_option_t *opt0, *limit0; + u8 type0; + + if (!hbh0) + return NULL; + + opt0 = (ip6_hop_by_hop_option_t *) (hbh0 + 1); + limit0 = (ip6_hop_by_hop_option_t *) + ((u8 *) hbh0 + ((hbh0->length + 1) << 3)); + + /* Scan the set of h-b-h options, process ones that we understand */ + while (opt0 < limit0) + { + type0 = opt0->type; + switch (type0) + { + case 0: /* Pad1 */ + opt0 = (ip6_hop_by_hop_option_t *) ((u8 *) opt0) + 1; + continue; + case 1: /* PadN */ + break; + default: + if (type0 == option_to_search) + return opt0; + break; + } + opt0 = + (ip6_hop_by_hop_option_t *) (((u8 *) opt0) + opt0->length + + sizeof (ip6_hop_by_hop_option_t)); + } + return NULL; +} + #endif /* __included_ip6_hop_by_hop_ioam_h__ */ /* |