if (i < 0)
if (i < 0) { printf(" [|rip]");
rip_print(const u_char *dat, u_int length){	register const struct rip *rp;	register const struct rip_netinfo *ni;	register int i, j, trunc;	i = min(length, snapend - dat) - sizeof(*rp);	if (i < 0)		return;	rp = (struct rip *)dat;	switch (rp->rip_cmd) {	case RIPCMD_REQUEST:		printf(" rip-req %d", length);		break;	case RIPCMD_RESPONSE:		j = length / sizeof(*ni);		if (j * sizeof(*ni) != length - 4)			printf(" rip-resp %d[%d]:", j, length);		else			printf(" rip-resp %d:", j);		trunc = ((i / sizeof(*ni)) * sizeof(*ni) != i);		ni = (struct rip_netinfo *)(rp + 1);		for (; (i -= sizeof(*ni)) >= 0; ++ni)			rip_entry_print(rp->rip_vers, ni);		if (trunc)			printf("[|rip]");		break;	case RIPCMD_TRACEON:		printf(" rip-traceon %d: \"", length);		(void)fn_print((const u_char *)(rp + 1), snapend);		fputs("\"\n", stdout);		break;	case RIPCMD_TRACEOFF:		printf(" rip-traceoff %d", length);		break;	case RIPCMD_POLL:		printf(" rip-poll %d", length);		break;	case RIPCMD_POLLENTRY:		printf(" rip-pollentry %d", length);		break;	default:		printf(" rip-#%d %d", rp->rip_cmd, length);		break;	}	switch (rp->rip_vers) {	case 1:	case 2:		break;	default:		printf(" [vers %d]", rp->rip_vers);		break;        }}