ip6-nd: only respond to RS if sending RA is enabled
[vpp.git] / src / vnet / ip6-nd / ip6_ra.c
index a3d95ee..895f309 100644 (file)
@@ -252,9 +252,10 @@ ip6_neighbor_syslog (vlib_main_t * vm, int priority, char *fmt, ...)
       {
        u32 s[2];
       } *ed;
-      ed = ELOG_DATA (&vm->elog_main, e);
-      ed->s[0] = elog_string (&vm->elog_main, log_level_strings[priority]);
-      ed->s[1] = elog_string (&vm->elog_main, (char *) what);
+      ed = ELOG_DATA (vlib_get_elog_main (), e);
+      ed->s[0] =
+       elog_string (vlib_get_elog_main (), log_level_strings[priority]);
+      ed->s[1] = elog_string (vlib_get_elog_main (), (char *) what);
     }
   va_end (va);
   return;
@@ -269,6 +270,9 @@ typedef enum
   ICMP6_ROUTER_SOLICITATION_N_NEXT,
 } icmp6_router_solicitation_or_advertisement_next_t;
 
+/*
+ * Note: Both periodic RAs and solicited RS come through here.
+ */
 static_always_inline uword
 icmp6_router_solicitation (vlib_main_t * vm,
                           vlib_node_runtime_t * node, vlib_frame_t * frame)
@@ -412,7 +416,9 @@ icmp6_router_solicitation (vlib_main_t * vm,
                  error0 = ((!radv_info) ?
                            ICMP6_ERROR_ROUTER_SOLICITATION_RADV_NOT_CONFIG :
                            error0);
-
+                 error0 = radv_info->send_radv == 0 ?
+                            ICMP6_ERROR_ROUTER_SOLICITATION_RADV_NOT_CONFIG :
+                            error0;
                  if (error0 == ICMP6_ERROR_NONE)
                    {
                      f64 now = vlib_time_now (vm);
@@ -1131,7 +1137,6 @@ create_buffer_for_rs (vlib_main_t * vm, ip6_ra_t * radv_info)
     }
 
   p0 = vlib_get_buffer (vm, bi0);
-  VLIB_BUFFER_TRACE_TRAJECTORY_INIT (p0);
   p0->flags |= VNET_BUFFER_F_LOCALLY_ORIGINATED;
 
   vnet_buffer (p0)->sw_if_index[VLIB_RX] = sw_if_index;