From 9fb4d10d270c1ea50a9dc11dabd67d20c90dc374 Mon Sep 17 00:00:00 2001 From: GnomeZworc Date: Sun, 18 Jan 2026 22:28:38 +0100 Subject: [PATCH] f-14: code: add create and delete vpc #14 Signed-off-by: GnomeZworc --- internal/vpc/create.go | 60 ++++++++++++++++++++++++++++++++++++++++++ internal/vpc/delete.go | 18 +++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 internal/vpc/create.go create mode 100644 internal/vpc/delete.go diff --git a/internal/vpc/create.go b/internal/vpc/create.go new file mode 100644 index 0000000..55896ba --- /dev/null +++ b/internal/vpc/create.go @@ -0,0 +1,60 @@ +package vpc + +import ( + "git.g3e.fr/syonad/two/internal/netif" + "git.g3e.fr/syonad/two/internal/netns" +) + +func CreateVPC(name string) error { + // missing + // search data in db + // change state in db + + // create netns + if err := netns.Create(name); err != nil { + return err + } + + // create veth public for this netns + if err := netif.CreateVethToNetns(name+"-ext", "veth-"+name+"-int", "/var/run/netns/"+name, 9000); err != nil { + return err + } + + // create public bridge in netns + if err := netns.Call(name, func() error { + return netif.CreateBridge("br-public", 1500, false) + }); err != nil { + return err + } + + // set veth to ext public bridge + if err := netif.BridgeSetMaster(name+"-ext", "br-public"); err != nil { + return err + } + + // set veth to int public bridge + if err := netns.Call(name, func() error { + return netif.BridgeSetMaster("veth-"+name+"-int", "br-public") + }); err != nil { + return err + } + + // set set ext veth up + if err := netif.LinkSetUp(name + "-ext"); err != nil { + return nil + } + // set set int veth up + if err := netns.Call(name, func() error { + return netif.LinkSetUp("veth-" + name + "-int") + }); err != nil { + return err + } + // set set int bridge up + if err := netns.Call(name, func() error { + return netif.LinkSetUp("br-public") + }); err != nil { + return err + } + + return nil +} diff --git a/internal/vpc/delete.go b/internal/vpc/delete.go new file mode 100644 index 0000000..3daea61 --- /dev/null +++ b/internal/vpc/delete.go @@ -0,0 +1,18 @@ +package vpc + +import ( + "git.g3e.fr/syonad/two/internal/netif" + "git.g3e.fr/syonad/two/internal/netns" +) + +func DeleteVPC(name string) error { + if err := netif.DeleteLink(name + "-ext"); err != nil { + return err + } + + if err := netns.Delete(name); err != nil { + return err + } + + return nil +}