Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

/*
 * Copyright (C) 2012 by Darren Reed.
 *
 * See the IPFILTER.LICENCE file for details on licencing.
 *
 * $Id: printstatefields.c,v 1.4.2.2 2012/01/26 05:44:26 darren_r Exp $
 */

#include "ipf.h"

wordtab_t statefields[] = {
	{ "all",	-2 },
	{ "ifp0",	1 },
	{ "ifp1",	2 },
	{ "ifp2",	3 },
	{ "ifp3",	4 },
	{ "ifname0",	5 },
	{ "ifname1",	6 },
	{ "ifname2",	7 },
	{ "ifname3",	8 },
	{ "pkts0",	9 },
	{ "pkts1",	10 },
	{ "pkts2",	11 },
	{ "pkts3",	12 },
	{ "bytes0",	13 },
	{ "bytes1",	14 },
	{ "bytes2",	15 },
	{ "bytes3",	16 },
	{ "state0",	17 },
	{ "state1",	18 },
	{ "age0",	19 },
	{ "age1",	20 },
	{ "ref",	21 },
	{ "isn0",	22 },
	{ "isn1",	23 },
	{ "sumd0",	24 },
	{ "sumd1",	25 },
	{ "src",	26 },
	{ "dst",	27 },
	{ "sport",	28 },
	{ "dport",	29 },
	{ "icmptype",	30 },
	{ "-",		31 },
	{ "pass",	32 },
	{ "proto",	33 },
	{ "version",	34 },
	{ "hash",	35 },
	{ "tag",	36 },
	{ "flags",	37 },
	{ "rulen",	38 },
	{ "group",	39 },
	{ "flx0",	40 },
	{ "flx1",	41 },
	{ "flx2",	42 },
	{ "flx3",	43 },
	{ "opt0",	44 },
	{ "opt1",	45 },
	{ "optmsk0",	46 },
	{ "optmsk1",	47 },
	{ "sec",	48 },
	{ "secmsk",	49 },
	{ "auth",	50 },
	{ "authmsk",	51 },
	{ "icmppkts0",	52 },
	{ "icmppkts1",	53 },
	{ "icmppkts2",	54 },
	{ "icmppkts3",	55 },
	{ NULL, 0 }
};


void
printstatefield(sp, fieldnum)
	ipstate_t *sp;
	int fieldnum;
{
	int i;

	switch (fieldnum)
	{
	case -2 :
		for (i = 1; statefields[i].w_word != NULL; i++) {
			if (statefields[i].w_value > 0) {
				printstatefield(sp, i);
				if (statefields[i + 1].w_value > 0)
					putchar('\t');
			}
		}
		break;

	case 1:
		PRINTF("%#lx", (u_long)sp->is_ifp[0]);
		break;

	case 2:
		PRINTF("%#lx", (u_long)sp->is_ifp[1]);
		break;

	case 3:
		PRINTF("%#lx", (u_long)sp->is_ifp[2]);
		break;

	case 4:
		PRINTF("%#lx", (u_long)sp->is_ifp[3]);
		break;

	case 5:
		PRINTF("%s", sp->is_ifname[0]);
		break;

	case 6:
		PRINTF("%s", sp->is_ifname[1]);
		break;

	case 7:
		PRINTF("%s", sp->is_ifname[2]);
		break;

	case 8:
		PRINTF("%s", sp->is_ifname[3]);
		break;

	case 9:
#ifdef USE_QUAD_T
		PRINTF("%"PRIu64"", sp->is_pkts[0]);
#else
		PRINTF("%lu", sp->is_pkts[0]);
#endif
		break;

	case 10:
#ifdef USE_QUAD_T
		PRINTF("%"PRIu64"", sp->is_pkts[1]);
#else
		PRINTF("%lu", sp->is_pkts[1]);
#endif
		break;

	case 11:
#ifdef USE_QUAD_T
		PRINTF("%"PRIu64"", sp->is_pkts[2]);
#else
		PRINTF("%lu", sp->is_pkts[2]);
#endif
		break;

	case 12:
#ifdef USE_QUAD_T
		PRINTF("%"PRIu64"", sp->is_pkts[3]);
#else
		PRINTF("%lu", sp->is_pkts[3]);
#endif
		break;

	case 13:
#ifdef USE_QUAD_T
		PRINTF("%"PRIu64"", sp->is_bytes[0]);
#else
		PRINTF("%lu", sp->is_bytes[0]);
#endif
		break;

	case 14:
#ifdef USE_QUAD_T
		PRINTF("%"PRIu64"", sp->is_bytes[1]);
#else
		PRINTF("%lu", sp->is_bytes[1]);
#endif
		break;

	case 15:
#ifdef USE_QUAD_T
		PRINTF("%"PRIu64"", sp->is_bytes[2]);
#else
		PRINTF("%lu", sp->is_bytes[2]);
#endif
		break;

	case 16:
#ifdef USE_QUAD_T
		PRINTF("%"PRIu64"", sp->is_bytes[3]);
#else
		PRINTF("%lu", sp->is_bytes[3]);
#endif
		break;

	case 17:
		PRINTF("%d", sp->is_state[0]);
		break;

	case 18:
		PRINTF("%d", sp->is_state[1]);
		break;

	case 19:
		PRINTF("%d", sp->is_frage[0]);
		break;

	case 20:
		PRINTF("%d", sp->is_frage[1]);
		break;

	case 21:
		PRINTF("%d", sp->is_ref);
		break;

	case 22:
		PRINTF("%d", sp->is_isninc[0]);
		break;

	case 23:
		PRINTF("%d", sp->is_isninc[1]);
		break;

	case 24:
		PRINTF("%hd", sp->is_sumd[0]);
		break;

	case 25:
		PRINTF("%hd", sp->is_sumd[1]);
		break;

	case 26:
		PRINTF("%s", hostname(sp->is_v, &sp->is_src.in4));
		break;

	case 27:
		PRINTF("%s", hostname(sp->is_v, &sp->is_dst.in4));
		break;

	case 28:
		PRINTF("%hu", ntohs(sp->is_sport));
		break;

	case 29:
		PRINTF("%hu", ntohs(sp->is_dport));
		break;

	case 30:
		PRINTF("%d", sp->is_type);
		break;

	case 32:
		PRINTF("%#x", sp->is_pass);
		break;

	case 33:
		PRINTF("%d", sp->is_p);
		break;

	case 34:
		PRINTF("%d", sp->is_v);
		break;

	case 35:
		PRINTF("%d", sp->is_hv);
		break;

	case 36:
		PRINTF("%d", sp->is_tag);
		break;

	case 37:
		PRINTF("%#x", sp->is_flags);
		break;

	case 38:
		PRINTF("%d", sp->is_rulen);
		break;

	case 39:
		PRINTF("%s", sp->is_group);
		break;

	case 40:
		PRINTF("%#x", sp->is_flx[0][0]);
		break;

	case 41:
		PRINTF("%#x", sp->is_flx[0][1]);
		break;

	case 42:
		PRINTF("%#x", sp->is_flx[1][0]);
		break;

	case 43:
		PRINTF("%#x", sp->is_flx[1][1]);
		break;

	case 44:
		PRINTF("%#x", sp->is_opt[0]);
		break;

	case 45:
		PRINTF("%#x", sp->is_opt[1]);
		break;

	case 46:
		PRINTF("%#x", sp->is_optmsk[0]);
		break;

	case 47:
		PRINTF("%#x", sp->is_optmsk[1]);
		break;

	case 48:
		PRINTF("%#x", sp->is_sec);
		break;

	case 49:
		PRINTF("%#x", sp->is_secmsk);
		break;

	case 50:
		PRINTF("%#x", sp->is_auth);
		break;

	case 51:
		PRINTF("%#x", sp->is_authmsk);
		break;

	case 52:
#ifdef USE_QUAD_T
		PRINTF("%"PRIu64"", sp->is_icmppkts[0]);
#else
		PRINTF("%lu", sp->is_icmppkts[0]);
#endif
		break;

	case 53:
#ifdef USE_QUAD_T
		PRINTF("%"PRIu64"", sp->is_icmppkts[1]);
#else
		PRINTF("%lu", sp->is_icmppkts[1]);
#endif
		break;

	case 54:
#ifdef USE_QUAD_T
		PRINTF("%"PRIu64"", sp->is_icmppkts[2]);
#else
		PRINTF("%lu", sp->is_icmppkts[2]);
#endif
		break;

	case 55:
#ifdef USE_QUAD_T
		PRINTF("%"PRIu64"", sp->is_icmppkts[3]);
#else
		PRINTF("%lu", sp->is_icmppkts[3]);
#endif
		break;

	default:
		break;
	}
}