@@ -366,11 +366,13 @@ func (v *VppRunner) setupIPv6MulticastForHostTap(vrfID uint32, tapSwIfIndex uint
366366 // IPv6 multicast groups that need to be forwarded from the Linux host
367367 multicastGroups := []struct {
368368 addr string
369+ prefix int // CIDR prefix length
369370 comment string
370371 }{
371- {"ff02::1:2" , "DHCPv6 All Relay Agents and Servers (REQUIRED for DHCPv6)" },
372- {"ff02::1" , "All Nodes (for NDP)" },
373- {"ff02::2" , "All Routers (for NDP/RA)" },
372+ {"ff02::1:2" , 128 , "DHCPv6 All Relay Agents and Servers (REQUIRED for DHCPv6)" },
373+ {"ff02::1" , 128 , "All Nodes (for NDP)" },
374+ {"ff02::2" , 128 , "All Routers (for NDP/RA)" },
375+ {"ff02::1:ff00:0" , 104 , "Solicited-Node Multicast (REQUIRED for NDP Neighbor Solicitation)" },
374376 }
375377
376378 for _ , group := range multicastGroups {
@@ -382,7 +384,7 @@ func (v *VppRunner) setupIPv6MulticastForHostTap(vrfID uint32, tapSwIfIndex uint
382384
383385 groupNet := & net.IPNet {
384386 IP : groupIP ,
385- Mask : net .CIDRMask (128 , 128 ), // /128 - specific group
387+ Mask : net .CIDRMask (group . prefix , 128 ),
386388 }
387389
388390 err := v .vpp .MRouteAddForHostMulticast (vrfID , groupNet , tapSwIfIndex , uplinkSwIfIndex )
0 commit comments