Esempio n. 1
0
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;
}
Esempio n. 2
0
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));
	}
}
Esempio n. 7
0
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");
}
Esempio n. 8
0
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;
}