printf("[|esp]");
printf("[|ah]");
ah_print (register const u_char *bp, register u_int len,	  register const u_char *bp2){	const struct ip *ip;	const struct ah_hdr *ah;	u_int pl_len = len;	ip = (const struct ip *)bp2;	printf("ah %s > %s",	    ipaddr_string(&ip->ip_src), ipaddr_string(&ip->ip_dst));	if (pl_len < sizeof(struct ah_hdr)) {		printf("[|esp]");		return;	}	ah = (const struct ah_hdr *)bp;	printf(" spi 0x%08X seq %d len %d",	    ntohl(ah->ah_spi), ntohl(ah->ah_seq), len);	if (vflag) {	        (void)printf("\n\t[ ");	        pl_len = (ah->ah_pl_len + 2) << 2; /* RFC2402, sec 2.2 */		if (len - pl_len <= 0) {		        (void)printf("truncated");			goto out;		}				switch (ah->ah_nxt_hdr) { 		case IPPROTO_IPIP: /* Tunnel Mode, IP-in-IP */		        ip_print(bp + pl_len, len - pl_len); 			break;	        case IPPROTO_ICMP: /* From here and down; Transport mode */		        icmp_print(bp + pl_len, (const u_char *) ip);			break;	        case IPPROTO_TCP:		        tcp_print(bp + pl_len, len - pl_len, 				  (const u_char *) ip);			break;	        case IPPROTO_UDP:		        udp_print(bp + pl_len, len - pl_len, 				  (const u_char *) ip);			break;		case IPPROTO_ESP:		        esp_print(bp + pl_len, len - pl_len, 				  (const u_char *) ip);			break;		case IPPROTO_AH:		        ah_print(bp + pl_len, len - pl_len, 				 (const u_char *) ip);			break;		default:		        (void)printf("ip-proto-%d len %d", ah->ah_nxt_hdr,				     len - pl_len);		}out:		(void)printf(" ]");	}}