if (r->rport) { printf(" port %u", ntohs(r->rport)); if (r->opts & PF_RPORT_RANGE) printf(":*"); }
printf(" ");
print_rdr(struct pf_rdr *r){	if (r->no)		printf("no ");	printf("rdr ");	if (r->ifname[0]) {		printf("on ");		if (r->ifnot)			printf("! ");		printf("%s ", r->ifname);	}	if (r->af) {		if (r->af == AF_INET)			printf("inet ");		else			printf("inet6 ");	}	if (r->proto) {		struct protoent *p = getprotobynumber(r->proto);		if (p != NULL)			printf("proto %s ", p->p_name);		else			printf("proto %u ", r->proto);	}	printf("from ");	if (!PF_AZERO(&r->saddr.addr, r->af) ||	    !PF_AZERO(&r->saddr.mask, r->af)) {		if (r->snot)			printf("! ");		print_addr(&r->saddr, r->af);		printf(" ");	} else		printf("any ");	printf("to ");	if (!PF_AZERO(&r->daddr.addr, r->af) ||	    !PF_AZERO(&r->daddr.mask, r->af)) {		if (r->dnot)			printf("! ");		print_addr(&r->daddr, r->af);		printf(" ");	} else		printf("any ");	if (r->dport) {		printf("port %u", ntohs(r->dport));		if (r->opts & PF_DPORT_RANGE)			printf(":%u", ntohs(r->dport2));	}	if (!r->no) {		printf(" -> ");		print_pool(&r->rpool, r->af, PF_POOL_RDR_R);		if (r->rport) {			printf(" port %u", ntohs(r->rport));			if (r->opts & PF_RPORT_RANGE)				printf(":*");		}		switch (r->rpool.opts & 0x0f) {		case PF_POOL_NONE:			break;		case PF_POOL_BITMASK:			printf(" bitmask");			break;		case PF_POOL_RANDOM:			printf(" random");			break;		case PF_POOL_SRCHASH:			printf(" source-hash");			break;		case PF_POOL_SRCKEYHASH:			printf(" source-hash key");			break;		case PF_POOL_ROUNDROBIN:			printf(" round-robin");			break;		}	}	printf("\n");}