Net2/usr/src/contrib/isode/snmp/gawk-2.11/s-gawk/mib.mbufs

BEGIN {
	MSIZE = 128; MCLBYTES = 1024;
	keys[0]  = "free";
	keys[1]  = "data";
	keys[2]  = "packet headers";
	keys[3]  = "socket structures";
	keys[4]  = "protocol control blocks";
	keys[5]  = "routing tables";
	keys[6]  = "IMP host tables";
	keys[7]  = "address resolution tables";
	keys[8]  = "socket names";
	keys[9]  = "zombie process status";
	keys[10] = "socket options";
	keys[11] = "fragment reassembly headers";

	total = 0; inuse = 0;

	didany = 0;
	for (i in mbufS) {
	    didany = 1;

	    i = mbufS; j = mbufFrees;
	    if (i == 0) { printf "no mbufS!?!\n"; exit(1); }
	    printf "%d/%d mbufs in use:\n", i - j, i;
	    total += i * MSIZE; inuse += (i - j) * MSIZE;

	    didone = 0;
	    for (i in mbufType) {
		didone = 1;

		if (mbufAllocates) {
		    printf "\t%d mbufs allocated to ", mbufAllocates;
		    if (k = keys[mbufType])
			printf "%s\n", k;
		    else
			printf "mbuf type %d\n", mbufType;
		}
	    }
	    if (!didone && DIAGNOSTIC)
		printf "mbufTable: %s\n", DIAGNOSTIC;

	    i = mbufClusters; j = mbufFreeClusters
	    printf "%d/%d mapped pages in use\n", i - j, i;
	    total += i * MCLBYTES; inuse += (i - j) * MCLBYTES;

	    printf "%d Kbytes allocated to network (%d%% in use) ESTIMATE\n",
		total / 1024, (inuse * 100) / total;
	    printf "%d requests for memory denied\n", mbufDrops;
	}
	if (!didany && DIAGNOSTIC)
	    printf "mbuf group: %s\n", DIAGNOSTIC;
      }