summaryrefslogtreecommitdiffstats
path: root/clover/clovisor/libclovisor/clovisor_bcc.go
diff options
context:
space:
mode:
authorStephen Wong <stephen.kf.wong@gmail.com>2019-01-28 23:28:38 +0000
committerGerrit Code Review <gerrit@opnfv.org>2019-01-28 23:28:38 +0000
commit3f86a3d611f4d2a4f21d9be2a2284ccf120db36e (patch)
tree288e4f40871338e1b78d68162eec5e15150b4143 /clover/clovisor/libclovisor/clovisor_bcc.go
parent43e82fbbf2e62d0aa63a06b8ba5d72f78854cc34 (diff)
parenta0a9f9e8bc71615899a76caa2eda85aef9930a4f (diff)
Merge "Prevent clovisor from unable to create qdisc / filter from previous instance dying abnormally (qdisc deletion is part of exit callback for pod under monitoring, but if clovisor exits abnormally, qdisc would not be deleted, which cause the restarted new clovisor pod unable to load BPF code to the pods under monitoring)"
Diffstat (limited to 'clover/clovisor/libclovisor/clovisor_bcc.go')
-rw-r--r--clover/clovisor/libclovisor/clovisor_bcc.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/clover/clovisor/libclovisor/clovisor_bcc.go b/clover/clovisor/libclovisor/clovisor_bcc.go
index e2d9cd8..ab5bc33 100644
--- a/clover/clovisor/libclovisor/clovisor_bcc.go
+++ b/clover/clovisor/libclovisor/clovisor_bcc.go
@@ -509,6 +509,22 @@ func ClovisorNewPodInit(k8s_client *ClovisorK8s,
session_table := bcc.NewTable(bpf_mod.TableId("sessions"), bpf_mod)
+ // check if qdisc clsact filter for this interface already exists
+ link, err := netlink.LinkByIndex(ifindex)
+ if err != nil {
+ fmt.Println(err)
+ } else {
+ qdiscs, err := netlink.QdiscList(link)
+ if err == nil {
+ for _, qdisc := range qdiscs {
+ if qdisc.Type() == "clsact" {
+ netlink.QdiscDel(qdisc)
+ break
+ }
+ }
+ }
+ }
+
attrs := netlink.QdiscAttrs {
LinkIndex: ifindex,
Handle: netlink.MakeHandle(0xffff, 0),