From 17adf2ca42d27396c0593ebea22f57e26b726e78 Mon Sep 17 00:00:00 2001 From: Jian Qiu Date: Wed, 17 Jan 2024 00:27:21 +0800 Subject: [PATCH] fix: dhcpv6 support in vpc network (#19270) Co-authored-by: Qiu Jian --- pkg/vpcagent/ovn/keeper.go | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/pkg/vpcagent/ovn/keeper.go b/pkg/vpcagent/ovn/keeper.go index 3bd083462b..242498209c 100644 --- a/pkg/vpcagent/ovn/keeper.go +++ b/pkg/vpcagent/ovn/keeper.go @@ -282,7 +282,7 @@ func (keeper *OVNNorthboundKeeper) ClaimNetwork(ctx context.Context, network *ag if len(network.GuestGateway6) > 0 && network.GuestIp6Mask > 0 { netRnp.Ipv6RaConfigs = map[string]string{ "address_mode": "dhcpv6_stateful", - // "send_periodic": "true", + // "send_periodic": "false", } } netNrp := &ovn_nb.LogicalSwitchPort{ @@ -323,7 +323,7 @@ func (keeper *OVNNorthboundKeeper) ClaimNetwork(ctx context.Context, network *ag vpcExtBackRouteIdRef = "vpcExtBackRoute" } } - if len(network.GuestGateway6) > 0 && network.GuestIp6Mask > 0 { + /*if len(network.GuestGateway6) > 0 && network.GuestIp6Mask > 0 { if ip6Addr, err := netutils.NewIPV6Addr(network.GuestGateway6); err != nil { return errors.Wrap(err, "NewIPV6Addr GuestGateway6") } else { @@ -341,7 +341,7 @@ func (keeper *OVNNorthboundKeeper) ClaimNetwork(ctx context.Context, network *ag } vpcExtBackRoute6IdRef = "vpcExtBackRoute6" } - } + }*/ var ( args []string @@ -366,7 +366,6 @@ func (keeper *OVNNorthboundKeeper) ClaimNetwork(ctx context.Context, network *ag args = append(args, ovnCreateArgs(netRnp, netRnp.Name)...) args = append(args, ovnCreateArgs(netNrp, netNrp.Name)...) args = append(args, ovnCreateArgs(netMdp, netMdp.Name)...) - // args = append(args, ovnCreateArgs(dhcpopts, "dhcpopts")...) args = append(args, ovnCreateArgs(vpcExtBackRoute, vpcExtBackRouteIdRef)...) if vpcExtBackRoute6 != nil { args = append(args, ovnCreateArgs(vpcExtBackRoute6, vpcExtBackRoute6IdRef)...) @@ -536,8 +535,8 @@ func generateDhcpOptions(ctx context.Context, guestnetwork *agentmodels.Guestnet func generateDhcp6Options(ctx context.Context, guestnetwork *agentmodels.Guestnetwork, opts *options.Options) *ovn_nb.DHCPOptions { var ( - network = guestnetwork.Network - + network = guestnetwork.Network + dhcpMac = mac.HashSubnetDhcpMac(network.Id) ocDhcpRef = fmt.Sprintf("dhcp6/%s/%s", guestnetwork.GuestId, guestnetwork.Ifname) ) @@ -546,8 +545,8 @@ func generateDhcp6Options(ctx context.Context, guestnetwork *agentmodels.Guestne dhcpopts := &ovn_nb.DHCPOptions{ Cidr: cidr6, Options: map[string]string{ - "server_id": network.GuestGateway6, - "dhcpv6_stateless": "false", + "server_id": dhcpMac, + // "dhcpv6_stateless": "false", }, ExternalIds: map[string]string{ externalKeyOcRef: ocDhcpRef, @@ -571,7 +570,6 @@ func (keeper *OVNNorthboundKeeper) ClaimGuestnetwork(ctx context.Context, guestn ocAclRef = fmt.Sprintf("acl/%s/%s/%s", network.Id, guestnetwork.GuestId, guestnetwork.Ifname) ocQosRef = fmt.Sprintf("qos/%s/%s/%s", network.Id, guestnetwork.GuestId, guestnetwork.Ifname) ocQosEipRef = fmt.Sprintf("qos-eip/%s/%s/%s/v2", vpc.Id, guestnetwork.GuestId, guestnetwork.Ifname) - // dhcpOpt string ) var ( @@ -589,14 +587,13 @@ func (keeper *OVNNorthboundKeeper) ClaimGuestnetwork(ctx context.Context, guestn if len(guestnetwork.Ip6Addr) > 0 { // ipv6 subIPs = append(subIPs, guestnetwork.Ip6Addr) - subIPms = append(subIPms, fmt.Sprintf("%s/%d", guestnetwork.Ip6Addr, guestnetwork.Network.GuestIp6Mask)) + subIPms = append(subIPms, fmt.Sprintf("%s/%d", guestnetwork.Ip6Addr, guestnetwork.Network.GuestIp6Mask), "fe80::/64") } gnp := &ovn_nb.LogicalSwitchPort{ Name: lportName, Addresses: []string{fmt.Sprintf("%s %s", guestnetwork.MacAddr, strings.Join(subIPs, " "))}, - // Dhcpv4Options: &dhcpOpt, - Options: map[string]string{}, + Options: map[string]string{}, } if guest.SrcMacCheck.IsFalse() { gnp.Addresses = append(gnp.Addresses, "unknown")