diff options
Diffstat (limited to 'src/vnet/ip/ip4_options.c')
-rw-r--r-- | src/vnet/ip/ip4_options.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/vnet/ip/ip4_options.c b/src/vnet/ip/ip4_options.c index 1b5a7878512..bbe311ffb20 100644 --- a/src/vnet/ip/ip4_options.c +++ b/src/vnet/ip/ip4_options.c @@ -78,10 +78,17 @@ VLIB_NODE_FN (ip4_options_node) (vlib_main_t * vm, { case IP4_ROUTER_ALERT_OPTION: /* + * check the option length + */ + if (options[1] != 4) + break; + /* * if it's an IGMP packet, pass up the local stack */ if (IP_PROTOCOL_IGMP == ip4->protocol) { + ip_lookup_set_buffer_fib_index ( + ip4_main.fib_index_by_sw_if_index, b); next = IP4_OPTIONS_NEXT_LOCAL; } break; @@ -120,7 +127,6 @@ format_ip4_options_trace (u8 * s, va_list * args) return s; } -/* *INDENT-OFF* */ VLIB_REGISTER_NODE (ip4_options_node) = { .name = "ip4-options", .vector_size = sizeof (u32), @@ -133,7 +139,6 @@ VLIB_REGISTER_NODE (ip4_options_node) = { .format_buffer = format_ip4_header, .format_trace = format_ip4_options_trace, }; -/* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON |