import (
"fmt"
"os"
+ "os/exec"
"github.com/containernetworking/cni/pkg/invoke"
"github.com/containernetworking/cni/pkg/ip"
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 {