static ssize_t hwf_nfp_debug_show(struct device *dev, struct device_attribute *attr, char *buf) { unsigned int off = 0; MV_STATUS status; MV_U32 hit; MV_NFP_CT_KEY key; if (!strcmp(attr->attr.name, "first_get")) { status = nfp_ct_first_get(&key, &hit); } else if (!strcmp(attr->attr.name, "mostly_get")) { status = nfp_ct_mostly_used_get(&key, &hit); } else { status = nfp_ct_next_get(&key, &hit); } if (status != MV_OK) { off += mvOsSPrintf(buf+off,"No rules found.\n"); return off; } if (key.family == AF_INET) { off += mvOsSPrintf(buf+off, "\nfamily: IPv4\n"); off += mvOsSPrintf(buf+off, "sip: "MV_IPQUAD_FMT"\n", MV_IPQUAD(key.src_l3)); off += mvOsSPrintf(buf+off, "dip: "MV_IPQUAD_FMT"\n", MV_IPQUAD(key.dst_l3)); } else { off += mvOsSPrintf(buf+off, "\nfamily: IPv6\n"); off += mvOsSPrintf(buf+off, "sip: "MV_IP6_FMT"\n", MV_IP6_ARG(key.src_l3)); off += mvOsSPrintf(buf+off, "dip: "MV_IP6_FMT"\n", MV_IP6_ARG(key.dst_l3)); } off += mvOsSPrintf(buf+off, "sport: %hu\n", key.sport); off += mvOsSPrintf(buf+off, "dport: %hu\n", key.dport); off += mvOsSPrintf(buf+off, "proto: %hhu\n\n", key.proto); off += mvOsSPrintf(buf+off, "hit counter: %d\n\n", hit); return off; }
int do_ct_age_del_forward(const char *name, int family, unsigned char *sip, unsigned char *dip, int sport, int dport, char *protoStr, int mode) { int proto; proto = get_protocol_num(protoStr); if (!proto) return 1; NFP_SYSFS_DBG(printk(KERN_INFO "nfp_ct_%s( IPv%d , ", name, family)); if (family == AF_INET) NFP_SYSFS_DBG(printk(MV_IPQUAD_FMT" , "MV_IPQUAD_FMT, MV_IPQUAD(sip), MV_IPQUAD(dip))); else NFP_SYSFS_DBG(printk(MV_IP6_FMT" , "MV_IP6_FMT, MV_IP6_ARG(sip), MV_IP6_ARG(dip))); if (!strcmp(name, "forward")) { NFP_SYSFS_DBG(printk(KERN_INFO " , %hu , %hu, %d , %d )\n", sport, dport, proto, mode)); nfp_ct_filter_set(family, sip, dip, sport, dport, proto, mode); } else { NFP_SYSFS_DBG(printk(KERN_INFO " , %hu , %hu, %d )\n", sport, dport, proto)); if (!strcmp(name, "del")) nfp_ct_del(family, sip, dip, sport, dport, proto); else printk(KERN_INFO "age: %d\n", nfp_ct_age(family, sip, dip, sport, dport, proto)); } return 0; }
void print_fib_del_age(int f, unsigned char *sip, unsigned char *dip, char *name) { if (f == AF_INET) { printk(KERN_INFO "%s_fib_rule(IPV4 , "MV_IPQUAD_FMT" , "MV_IPQUAD_FMT" )\n", name, MV_IPQUAD(sip), MV_IPQUAD(dip)); } else { printk(KERN_INFO "%s_fib_rule(IPV6 , "MV_IP6_FMT" , ", name, MV_IP6_ARG(sip)); printk(KERN_INFO MV_IP6_FMT")\n", MV_IP6_ARG(dip)); } }
/* ip printers */ void print_fib_add(int f, unsigned char *sip, unsigned char *dip, int oif, unsigned char *gtw) { if (f == AF_INET) { printk(KERN_INFO "add_fib_rule(IPV4 , "MV_IPQUAD_FMT" , "MV_IPQUAD_FMT" , %d, "MV_IPQUAD_FMT" )\n", MV_IPQUAD(sip), MV_IPQUAD(dip), oif, MV_IPQUAD(gtw)); } else { printk(KERN_INFO "add_fib_rule(IPV6 , "MV_IP6_FMT" , ", MV_IP6_ARG(sip)); printk(KERN_INFO MV_IP6_FMT" , %d , ", MV_IP6_ARG(dip), oif); printk(KERN_INFO MV_IP6_FMT" )\n", MV_IP6_ARG(gtw)); } }
void print_arp_del_age(int f, unsigned char *gtw, char *name) { if (f == AF_INET) printk(KERN_INFO "nfp_arp_%s(IPV4, "MV_IPQUAD_FMT" )\n", name, MV_IPQUAD(gtw)); else printk(KERN_INFO "nfp_arp_%s(IPV6, "MV_IP6_FMT" )\n", name, MV_IP6_ARG(gtw)); }
void print_arp_add(int f, unsigned char *gtw, MV_U8 *mac) { if (f == AF_INET) { printk(KERN_INFO "nfp_arp_add(IPV4, "MV_IPQUAD_FMT" , "MV_MACQUAD_FMT" )\n", MV_IPQUAD(gtw), MV_MACQUAD(mac)); } else { printk(KERN_INFO "nfp_arp_add(IPV6, "MV_IP6_FMT" , "MV_MACQUAD_FMT" )\n", MV_IP6_ARG(gtw), MV_MACQUAD(mac)); } }
static void mvNfpFibRulePrint(NFP_RULE_FIB *fib) { if (fib->family == MV_INET) { mvOsPrintf("IPv4: " MV_IPQUAD_FMT "->" MV_IPQUAD_FMT"\n", MV_IPQUAD(*((u32 *) fib->srcL3)), MV_IPQUAD(*((u32 *) fib->dstL3))); } else { mvOsPrintf("IPv6: " MV_IP6_FMT "->" MV_IP6_FMT"\n", MV_IP6_ARG(fib->srcL3), MV_IP6_ARG(fib->dstL3)); } mvOsPrintf(" mh=%2.2x:%2.2x da=" MV_MACQUAD_FMT " sa=" MV_MACQUAD_FMT "\n", ((MV_U8 *) &fib->mh)[0], ((MV_U8 *) &fib->mh)[1], MV_MACQUAD(fib->da), MV_MACQUAD(fib->sa)); mvOsPrintf(" outport=%d, outdev=%p, flags=0x%x, ref=%d, age=%x, fib=%p, pnc=%p\n", fib->outport, fib->outdev, fib->flags, fib->ref, fib->age, fib, fib->pnc); mvOsPrintf(" Flags: "); if (fib->flags & NFP_F_DYNAMIC) mvOsPrintf("NFP_F_DYNAMIC "); if (fib->flags & NFP_F_STATIC) mvOsPrintf("NFP_F_STATIC "); if (fib->flags & NFP_F_INV) mvOsPrintf("NFP_F_INV "); if (fib->flags & NFP_F_SNAT) mvOsPrintf("NFP_F_SNAT "); if (fib->flags & NFP_F_DNAT) mvOsPrintf("NFP_F_DNAT "); if (fib->flags & NFP_F_BUSY) mvOsPrintf("NFP_F_BUSY "); if (fib->flags & NFP_F_PPPOE_ADD) mvOsPrintf("NFP_F_PPPOE_ADD "); if (fib->flags & NFP_F_PPPOE_REMOVE) mvOsPrintf("NFP_F_PPPOE_REMOVE "); if (fib->flags & NFP_F_HWF) mvOsPrintf("NFP_F_HWF "); if (fib->flags & NFP_F_BRIDGE) mvOsPrintf("NFP_F_BRIDGE "); mvOsPrintf("\n"); }
int do_ct_tbf(const char *name, int family, unsigned char *sip, unsigned char *dip, int sport, int dport, char *protoStr, int tbfIndex) { int proto; proto = get_protocol_num(protoStr); if (!proto) return 1; NFP_SYSFS_DBG(printk(KERN_INFO "nfp_ct_%s( IPv%d , ", name, family)); if (family == AF_INET) NFP_SYSFS_DBG(printk(KERN_INFO MV_IPQUAD_FMT" , "MV_IPQUAD_FMT, MV_IPQUAD(sip), MV_IPQUAD(dip))); else NFP_SYSFS_DBG(printk(KERN_INFO MV_IP6_FMT" , "MV_IP6_FMT, MV_IP6_ARG(sip), MV_IP6_ARG(dip))); if (!strcmp(name, "rate_limit_set")) { NFP_SYSFS_DBG(printk(KERN_INFO " , %hu , %hu, %d , %d )\n", sport, dport, proto, tbfIndex)); nfp_ct_rate_limit_set(family, sip, dip, sport, dport, proto, tbfIndex); } else { NFP_SYSFS_DBG(printk(KERN_INFO " , %hu , %hu, %d )\n", sport, dport, proto)); nfp_ct_rate_limit_del(family, sip, dip, sport, dport, proto); } return 0; }