Skip to content

Commit

Permalink
fix: use map for linkGREs and add route at default path
Browse files Browse the repository at this point in the history
  • Loading branch information
andy89923 committed Jun 11, 2024
1 parent 52eeaae commit dd33745
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 8 deletions.
11 changes: 7 additions & 4 deletions internal/gre/gre.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,21 @@ func SetupGreTunnels(
greIfaceName, parentIfaceName string,
ueTunnelAddr, n3iwfTunnelAddr, pduAddr net.IP,
qoSInfo *Qos.PDUQoSInfo,
) ([]netlink.Link, error) {
) (map[uint8]*netlink.Link, error) {
parent, err := netlink.LinkByName(parentIfaceName)
if err != nil {
return nil, fmt.Errorf("netlink.LinkByName: [%+v] %+v", parentIfaceName, err)
}

if qoSInfo == nil {
linkGre, err := SetupGreTunnel(greIfaceName, parent, ueTunnelAddr, n3iwfTunnelAddr, pduAddr, 0)
return []netlink.Link{linkGre}, err
return map[uint8]*netlink.Link{
1: &linkGre,
}, err
}

n3ueSelf := context.N3UESelf()
netlinks := []netlink.Link{}
netlinks := map[uint8]*netlink.Link{}

for _, qfi := range qoSInfo.QfiList {
linkGRE, err := SetupGreTunnel(greIfaceName, parent, ueTunnelAddr, n3iwfTunnelAddr, pduAddr, qfi)
Expand All @@ -37,7 +39,8 @@ func SetupGreTunnels(
}

n3ueSelf.CreatedIface = append(n3ueSelf.CreatedIface, &linkGRE)
netlinks = append(netlinks, linkGRE)
netlinks[qfi] = &linkGRE

}

Check failure on line 44 in internal/gre/gre.go

View workflow job for this annotation

GitHub Actions / lint (1.21)

unnecessary trailing newline (whitespace)
return netlinks, nil
}
Expand Down
8 changes: 4 additions & 4 deletions internal/nwucp/handler/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,17 @@ func HandleDLNASTransport(n3ueSelf *context.N3UE, nasMsg *nas.Message) {

newGREName := fmt.Sprintf("%s-id-%d", n3ueSelf.N3ueInfo.GreIfaceName, n3ueSelf.N3ueInfo.XfrmiId)

var linkGREs []netlink.Link
var linkGREs map[uint8]*netlink.Link
if linkGREs, err = gre.SetupGreTunnels(newGREName, n3ueSelf.TemporaryXfrmiName, n3ueSelf.UEInnerAddr.IP,
n3ueSelf.TemporaryUPIPAddr, pduAddress, n3ueSelf.TemporaryQosInfo); err != nil {
naslog.Errorf("Setup GRE tunnel %s Fail: %+v", newGREName, err)
return
}

// Add routes
// TODO: here we not ensure that linkGREs[0] is defalt path (QFI = 1)
// Add route
defaultGretunnel := *linkGREs[uint8(1)]
upRoute := &netlink.Route{
LinkIndex: linkGREs[0].Attrs().Index,
LinkIndex: defaultGretunnel.Attrs().Index,
Dst: &net.IPNet{
IP: net.IPv4zero,
Mask: net.IPv4Mask(0, 0, 0, 0),
Expand Down

0 comments on commit dd33745

Please sign in to comment.