@@ -10,7 +10,7 @@ import (
1010 ip "github.com/vishvananda/netlink"
1111)
1212
13- func findDefaultInterface () (* ip.Link , error ) {
13+ func findDefaultInterface () (ip.Link , error ) {
1414 _ , dflt , err := net .ParseCIDR ("0.0.0.0/0" )
1515 if err != nil {
1616 return nil , fmt .Errorf ("Error parsing CIDR: %s" , err .Error ())
@@ -29,7 +29,7 @@ func findDefaultInterface() (*ip.Link, error) {
2929 }
3030 for _ , r := range routes {
3131 if r .Dst .String () == dflt .String () {
32- return & l , nil
32+ return l , nil
3333 }
3434 }
3535 }
@@ -53,16 +53,30 @@ func main() {
5353 log .Error ("Couldn't parse PID to int" , "PID" , envPID , "error" , err )
5454 os .Exit (1 )
5555 }
56+ var dflt ip.Link
5657
57- dflt , err := findDefaultInterface ()
58- if err != nil {
59- log .Error ("Couldn't find default interface" , "error" , err )
60- os .Exit (1 )
58+ name := os .Getenv ("INTERFACE" )
59+ if name == "" {
60+ log .Info ("Interface env var not set, finding by route" )
61+ dflt , err = findDefaultInterface ()
62+ if err != nil {
63+ log .Error ("Couldn't find default interface and env var is empty" , "msg" , err )
64+ os .Exit (1 )
65+ }
66+ } else {
67+ log .Info ("Interface env var set, finding by name" )
68+ dflt , err = ip .LinkByName (name )
69+ if err != nil {
70+ log .Error ("Couldn't find interface from env var by name" , "name" , name , "msg" , err )
71+ os .Exit (1 )
72+ }
6173 }
74+ log .Info ("Found interface" , "name" , dflt .Attrs ().Name )
6275
6376 attrs := ip .NewLinkAttrs ()
6477 attrs .Name = "vlan" + envID
65- attrs .ParentIndex = (* dflt ).Attrs ().Index
78+ log .Info ("Setting parent index" , "to" , dflt .Attrs ().Index , "from" , dflt .Attrs ().Name )
79+ attrs .ParentIndex = dflt .Attrs ().Index
6680 vlan := ip.Vlan {
6781 LinkAttrs : attrs ,
6882 VlanId : int (ID ),
0 commit comments