two/internal/netif/bridge.go
GnomeZworc d3b471b24a
f-14: code: add set master bridge #14
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-01-17 20:59:05 +01:00

52 lines
840 B
Go

package netif
import (
"fmt"
"os"
"github.com/vishvananda/netlink"
)
func setBridgeSTP(bridge string, enable bool) error {
path := fmt.Sprintf("/sys/class/net/%s/bridge/stp_state", bridge)
val := "0"
if enable {
val = "1"
}
return os.WriteFile(path, []byte(val), 0644)
}
func CreateBridge(name string, mtu int, stp bool) error {
br := &netlink.Bridge{
LinkAttrs: netlink.LinkAttrs{
Name: name,
MTU: mtu,
},
}
if err := netlink.LinkAdd(br); err != nil {
return err
}
if err := netlink.LinkSetUp(br); err != nil {
return err
}
return setBridgeSTP(name, stp)
}
func BridgeSetMaster(iface, bridge string) error {
link, err := netlink.LinkByName(iface)
if err != nil {
return err
}
br, err := netlink.LinkByName(bridge)
if err != nil {
return err
}
return netlink.LinkSetMaster(link, br)
}