diff options
author | Stephen Wong <stephen.kf.wong@gmail.com> | 2019-01-28 23:28:38 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2019-01-28 23:28:38 +0000 |
commit | 3f86a3d611f4d2a4f21d9be2a2284ccf120db36e (patch) | |
tree | 288e4f40871338e1b78d68162eec5e15150b4143 /clover/clovisor/libclovisor/clovisor_bcc.go | |
parent | 43e82fbbf2e62d0aa63a06b8ba5d72f78854cc34 (diff) | |
parent | a0a9f9e8bc71615899a76caa2eda85aef9930a4f (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.go | 16 |
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), |