diff options
Diffstat (limited to 'sys/netinet/udp_usrreq.c')
| -rw-r--r-- | sys/netinet/udp_usrreq.c | 15 | 
1 files changed, 8 insertions, 7 deletions
| diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c index f44bd1838d07..88df8f8d38fc 100644 --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -786,7 +786,8 @@ udplite_ctlinput(struct icmp *icmp)  static int  udp_pcblist(SYSCTL_HANDLER_ARGS)  { -	struct inpcb_iterator inpi = INP_ALL_ITERATOR(&V_udbinfo, +	struct inpcbinfo *pcbinfo = udp_get_inpcbinfo(arg2); +	struct inpcb_iterator inpi = INP_ALL_ITERATOR(pcbinfo,  	    INPLOOKUP_RLOCKPCB);  	struct xinpgen xig;  	struct inpcb *inp; @@ -798,7 +799,7 @@ udp_pcblist(SYSCTL_HANDLER_ARGS)  	if (req->oldptr == 0) {  		int n; -		n = V_udbinfo.ipi_count; +		n = pcbinfo->ipi_count;  		n += imax(n / 8, 10);  		req->oldidx = 2 * (sizeof xig) + n * sizeof(struct xinpcb);  		return (0); @@ -809,8 +810,8 @@ udp_pcblist(SYSCTL_HANDLER_ARGS)  	bzero(&xig, sizeof(xig));  	xig.xig_len = sizeof xig; -	xig.xig_count = V_udbinfo.ipi_count; -	xig.xig_gen = V_udbinfo.ipi_gencnt; +	xig.xig_count = pcbinfo->ipi_count; +	xig.xig_gen = pcbinfo->ipi_gencnt;  	xig.xig_sogen = so_gencnt;  	error = SYSCTL_OUT(req, &xig, sizeof xig);  	if (error) @@ -837,9 +838,9 @@ udp_pcblist(SYSCTL_HANDLER_ARGS)  		 * that something happened while we were processing this  		 * request, and it might be necessary to retry.  		 */ -		xig.xig_gen = V_udbinfo.ipi_gencnt; +		xig.xig_gen = pcbinfo->ipi_gencnt;  		xig.xig_sogen = so_gencnt; -		xig.xig_count = V_udbinfo.ipi_count; +		xig.xig_count = pcbinfo->ipi_count;  		error = SYSCTL_OUT(req, &xig, sizeof xig);  	} @@ -847,7 +848,7 @@ udp_pcblist(SYSCTL_HANDLER_ARGS)  }  SYSCTL_PROC(_net_inet_udp, UDPCTL_PCBLIST, pcblist, -    CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, 0, +    CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, IPPROTO_UDP,      udp_pcblist, "S,xinpcb",      "List of active UDP sockets"); | 
