f-15: ia: first subnet try

Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
GnomeZworc 2026-04-11 23:27:07 +02:00
commit cad1a9f46b
Signed by: nicolas.boufideline
GPG key ID: 4406BBBF8845D632
7 changed files with 445 additions and 0 deletions

21
internal/netif/addr.go Normal file
View file

@ -0,0 +1,21 @@
package netif
import (
"net"
"github.com/vishvananda/netlink"
)
func AddrAdd(iface string, ip net.IP) error {
link, err := netlink.LinkByName(iface)
if err != nil {
return err
}
addr := &netlink.Addr{
IPNet: &net.IPNet{
IP: ip,
Mask: net.CIDRMask(32, 32),
},
}
return netlink.AddrAdd(link, addr)
}

View file

@ -0,0 +1,21 @@
//go:build linux
package netif
import (
"net"
"github.com/vishvananda/netlink"
)
func RouteAdd(iface string, subnet *net.IPNet) error {
link, err := netlink.LinkByName(iface)
if err != nil {
return err
}
return netlink.RouteAdd(&netlink.Route{
LinkIndex: link.Attrs().Index,
Dst: subnet,
Scope: netlink.SCOPE_LINK,
})
}

View file

@ -0,0 +1,9 @@
//go:build !linux
package netif
import "net"
func RouteAdd(_ string, _ *net.IPNet) error {
return nil
}

20
internal/netif/vxlan.go Normal file
View file

@ -0,0 +1,20 @@
package netif
import (
"net"
"github.com/vishvananda/netlink"
)
func CreateVxlan(name string, vxlanID int, localIP net.IP) error {
vxlan := &netlink.Vxlan{
LinkAttrs: netlink.LinkAttrs{
Name: name,
},
VxlanId: vxlanID,
Port: 4789,
SrcAddr: localIP,
Learning: false,
}
return netlink.LinkAdd(vxlan)
}