From: VZ Cambria Date: Wed, 28 Dec 2016 17:31:33 +0000 (-0500) Subject: Addded sample tc rules X-Git-Url: https://git.halfball.org/?a=commitdiff_plain;h=911a584c5b0d875fc185b69a4c20faa2dd51048d;p=cni.git Addded sample tc rules --- diff --git a/pkg/ipam/ipam.go b/pkg/ipam/ipam.go index d9fbff7..09b167e 100644 --- a/pkg/ipam/ipam.go +++ b/pkg/ipam/ipam.go @@ -17,6 +17,7 @@ package ipam import ( "fmt" "os" + "os/exec" "github.com/containernetworking/cni/pkg/invoke" "github.com/containernetworking/cni/pkg/ip" @@ -51,6 +52,52 @@ func ConfigureIface(ifName string, res *types.Result) error { return fmt.Errorf("failed to add IP addr to %q: %v", ifName, err) } +/* + * Begin + */ + var ( + cmdOut []byte + result string + ) + + cmdName := "tc" + cmdArgs := []string{"qdisc", "add", "dev", ifName, "ingress"} + if cmdOut, err = exec.Command(cmdName, cmdArgs...).Output(); err != nil { + return fmt.Errorf("There was an error adding qdisc to %q: %v", ifName, err) + } + + // cmdName = "tc" + cmdArgs = []string{"-s", "qdisc", "show", "dev", ifName} + if cmdOut, err = exec.Command(cmdName, cmdArgs...).Output(); err != nil { + return fmt.Errorf("There was an error showing qdisc on %q: %v", ifName, err) + } + result = string(cmdOut) + fmt.Println("The result of qdisc show is: ",result) + + // cmdName = "tc" + cmdArgs = []string{"filter", "add", "dev", ifName, "parent", "ffff:", "protocol", "ip", "prio", "2", "u32", "match", "ip", "src", "10.37.2.1/32", "flowid", ":10", "action", "pass" } + if cmdOut, err = exec.Command(cmdName, cmdArgs...).Output(); err != nil { + return fmt.Errorf("There was an error adding tc filter to %q: %v", ifName, err) + } + + // cmdName = "tc" + cmdArgs = []string{"filter", "add", "dev", ifName, "parent", "ffff:", "protocol", "ip", "prio", "2", "u32", "match", "ip", "src", "10.37.3.1/32", "flowid", ":10", "action", "drop" } + if cmdOut, err = exec.Command(cmdName, cmdArgs...).Output(); err != nil { + return fmt.Errorf("There was an error adding tc filter to %q: %v", ifName, err) + } + + // cmdName = "tc" + cmdArgs = []string{"-s", "filter", "show", "dev", ifName, "parent", "ffff:"} + if cmdOut, err = exec.Command(cmdName, cmdArgs...).Output(); err != nil { + return fmt.Errorf("There was an error showing tc filter on %q: %v", ifName, err) + } + result = string(cmdOut) + fmt.Println("The result of show filter is: ", result) + +/* + * End + */ + for _, r := range res.IP4.Routes { gw := r.GW if gw == nil {