package main

import (
	"fmt"
	"log"
	"net"

	"github.com/milosgajdos83/tenus"
)

func main() {
	// CREATE MACVLAN HOST INTERFACE
	macVlanHost, err := tenus.NewMacVlanLinkWithOptions("eth1", tenus.MacVlanOptions{Mode: "bridge", Dev: "macvlanHostIfc"})
	if err != nil {
		log.Fatal(err)
	}

	macVlanHostIp, macVlanHostIpNet, err := net.ParseCIDR("10.0.41.2/16")
	if err != nil {
		log.Fatal(err)
	}

	if err := macVlanHost.SetLinkIp(macVlanHostIp, macVlanHostIpNet); err != nil {
		fmt.Println(err)
	}

	if err = macVlanHost.SetLinkUp(); err != nil {
		fmt.Println(err)
	}

	// CREATE MACVLAN DOCKER INTERFACE
	macVlanDocker, err := tenus.NewMacVlanLinkWithOptions("eth1", tenus.MacVlanOptions{Mode: "bridge",Dev: "macvlanDckrIfc"})
	if err != nil {
		log.Fatal(err)
	}

	// PASS MACVLAN INTERFACE TO A RUNNING DOCKER BY PID
	pid, err := tenus.DockerPidByName("mcvlandckr", "/var/run/docker.sock")
	if err != nil {
		log.Fatal(err)
	}

	if err := macVlanDocker.SetLinkNetNsPid(pid); err != nil {
		log.Fatal(err)
	}

	// ALLOCATE AND SET IP FOR THE NEW DOCKER INTERFACE
	macVlanDckrIp, macVlanDckrIpNet, err := net.ParseCIDR("10.0.41.3/16")
	if err != nil {
		log.Fatal(err)
	}

	if err := macVlanDocker.SetLinkNetInNs(pid, macVlanDckrIp, macVlanDckrIpNet, nil); err != nil {
		log.Fatal(err)
	}
}