printf(" %s", isonsap_string(is));
printf(" net %s", isonsap_string(is));
esis_print(const u_char *p, u_int length){	const u_char *ep;	int li = p[1];	const struct esis_hdr *eh = (const struct esis_hdr *) &p[2];	u_char cksum[2];	u_char off[2];	if (length == 2) {		if (qflag)			printf(" bad pkt!");		else			printf(" no header at all!");		return;	}	ep = p + li;	if (li > length) {		if (qflag)			printf(" bad pkt!");		else			printf(" LI(%d) > PDU size (%d)!", li, length);		return;	}	if (li < sizeof(struct esis_hdr) + 2) {		if (qflag)			printf(" bad pkt!");		else {			printf(" too short for esis header %d:", li);			while (--length >= 0)				printf("%02X", *p++);		}		return;	}	switch (eh->type & 0x1f) {	case ESIS_REDIRECT:		printf(" redirect");		break;	case ESIS_ESH:		printf(" esh");		break;	case ESIS_ISH:		printf(" ish");		break;	default:		printf(" type %d", eh->type & 0x1f);		break;	}	off[0] = eh->cksum[0];	off[1] = eh->cksum[1];	if (vflag && osi_cksum(p, li, eh->cksum, cksum, off)) {		printf(" bad cksum (got %02x%02x want %02x%02x)",		       eh->cksum[1], eh->cksum[0], cksum[1], cksum[0]);		return;	}	if (eh->version != 1) {		printf(" unsupported version %d", eh->version);		return;	}	p += sizeof(*eh) + 2;	li -= sizeof(*eh) + 2;	/* protoid * li */	switch (eh->type & 0x1f) {	case ESIS_REDIRECT: {		const u_char *dst, *snpa, *is;		dst = p; p += *p + 1;		if (p > snapend)			return;		printf(" %s", isonsap_string(dst));		snpa = p; p += *p + 1;		is = p;   p += *p + 1;		if (p > snapend)			return;		if (p > ep) {			printf(" [bad li]");			return;		}		if (is[0] == 0)			printf(" > %s", etheraddr_string(&snpa[1]));		else			printf(" > %s", isonsap_string(is));		li = ep - p;		break;	}#if 0	case ESIS_ESH:		printf(" esh");		break;#endif	case ESIS_ISH: {		const u_char *is;		is = p; p += *p + 1;		if (p > ep) {			printf(" [bad li]");			return;		}		if (p > snapend)			return;		printf(" %s", isonsap_string(is));		li = ep - p;		break;	}	default:		(void)printf(" len=%d", length);		if (length && p < snapend) {			length = snapend - p;			default_print(p, length);		}		return;	}	if (vflag)		while (p < ep && li) {			int op, opli;			const u_char *q;			if (snapend - p < 2)				return;			if (li < 2) {				printf(" bad opts/li");				return;			}			op = *p++;			opli = *p++;			li -= 2;			if (opli > li) {				printf(" opt (%d) too long", op);				return;			}			li -= opli;			q = p;			p += opli;			if (snapend < p)				return;			if (op == 198 && opli == 2) {				printf(" tmo=%d", q[0] * 256 + q[1]);				continue;			}			printf (" %d:<", op);			while (--opli >= 0)				printf("%02x", *q++);			printf (">");		}}