From a0a9f9e8bc71615899a76caa2eda85aef9930a4f Mon Sep 17 00:00:00 2001 From: Stephen Wong Date: Mon, 28 Jan 2019 08:19:11 +0000 Subject: 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) Change-Id: I5620f34e7f05805e203d1cfda9a8f7a1d42fd4f5 Signed-off-by: Stephen Wong --- clover/clovisor/libclovisor/clovisor_bcc.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'clover/clovisor/libclovisor/clovisor_bcc.go') 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), -- cgit 1.2.3-korg