Addded sample tc rules
authorVZ Cambria <vzcambria@gmail.com>
Wed, 28 Dec 2016 17:31:33 +0000 (12:31 -0500)
committerVZ Cambria <vzcambria@gmail.com>
Wed, 28 Dec 2016 17:31:33 +0000 (12:31 -0500)
pkg/ipam/ipam.go

index d9fbff7..09b167e 100644 (file)
@@ -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 {