Skip to content

Commit f12b93e

Browse files
committed
Tc
1 parent 48838c4 commit f12b93e

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

src/sfunnel.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,11 @@ int redirect_seg_pkt(struct __sk_buff* skb, bool ingress, __u16 rule_id){
319319

320320
skb->mark = ingress ? PKT_REDIR_INGRESS : PKT_REDIR_EGRESS;
321321
skb->mark |= rule_id;
322+
323+
PRINTK("[%d:0x%p] Redirecting %d->%d mark: 0x%x", skb->ifindex, skb,
324+
skb->ifindex,
325+
SEG_DEV_IFINDEX,
326+
skb->mark);
322327
return bpf_redirect(SEG_DEV_IFINDEX, 0);
323328
}
324329

@@ -347,20 +352,20 @@ int proc_ip4(struct __sk_buff* skb, bool ingress, __u8* eth, struct iphdr* ip){
347352
//egress iface
348353
if(skb->mark&PKT_REDIR_EGRESS &&
349354
skb->ifindex == SEG_PAIR_DEV_IFINDEX){
350-
PRINTK("[%d:0x%p] Skipping recirculated pkt coming from EGRESS program",
355+
PRINTK("[%d:0x%p] Skipping redirected pkt coming from EGRESS program",
351356
skb->ifindex, skb);
352357
return TC_ACT_UNSPEC;
353358
}
354359

355360
if(skb->gso_size > 0){
356361
//The packet has been redirected before, but is looped
357362
//back GSOed => drop (bug)
358-
PRINTK("[%d:0x%p] Recirculated pkt is still GSOed",
363+
PRINTK("[%d:0x%p] Redirected pkt is still GSOed",
359364
skb->ifindex, skb);
360365
return TC_ACT_SHOT;
361366
}
362367

363-
PRINTK("[%d:0x%p] Processing %s recirculated pkt, mark: 0x%x",
368+
PRINTK("[%d:0x%p] Processing redirected pkt from %s, mark: 0x%x",
364369
skb->ifindex,
365370
skb,
366371
skb->mark&PKT_REDIR_EGRESS? "EGRESS" : "INGRESS",
@@ -375,6 +380,9 @@ int proc_ip4(struct __sk_buff* skb, bool ingress, __u8* eth, struct iphdr* ip){
375380
}
376381
rule = &ip4_rules[index];
377382
skb->mark &= ~(0xFFFF | PKT_REDIR);
383+
384+
PRINTK("[%d:0x%p] Cached matched rule#%u %s", skb->ifindex, skb,
385+
rule->id);
378386
}else{
379387
PRINTK("[%d:0x%p] Looking up IP4/%s, size %d", skb->ifindex, skb,
380388
(ip->protocol == IPPROTO_UDP)?
@@ -385,11 +393,11 @@ int proc_ip4(struct __sk_buff* skb, bool ingress, __u8* eth, struct iphdr* ip){
385393
PRINTK("[%d:0x%p] No match", skb->ifindex, skb);
386394
return TC_ACT_UNSPEC;
387395
}
396+
397+
PRINTK("[%d:0x%p] Matched rule#%u", skb->ifindex, skb, rule->id);
388398
if(SEG_DEV_IFINDEX > 0)
389399
return redirect_seg_pkt(skb, ingress, rule->id);
390400
}
391-
PRINTK("[%d:0x%p] Matched rule#%u %s", skb->ifindex, skb, rule->id,
392-
skb->mark&PKT_REDIR ? "(cached)" : "");
393401

394402
//Direct actions
395403
if(rule->actions.drop.execute){

0 commit comments

Comments
 (0)