Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Sep 2005 18:38:32 GMT
From:      Victor Cruceru <soc-victor@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 83275 for review
Message-ID:  <200509081838.j88IcWgs059875@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=83275

Change 83275 by soc-victor@soc-victor_82.76.158.176 on 2005/09/08 18:38:30

	Fixed an ugly bug in OID index encoding (for INET-ADDRESS-MIB TCs)
	for both TCP and UDP MIBs.

Affected files ...

.. //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_tcp_udp46/tcp46_snmp.c#8 edit
.. //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_tcp_udp46/udp46_snmp.c#8 edit

Differences ...

==== //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_tcp_udp46/tcp46_snmp.c#8 (text+ko) ====

@@ -197,21 +197,23 @@
 	assert(tp != NULL);
 	/*next is the encoding for the SNMP table index*/
 	
-	all_oid->index.len = 12;
+	all_oid->index.len = 14;
 	all_oid->index.subs[0] = (uint32_t)IAT_ipv4;
+	all_oid->index.subs[1] = 4;
 	inaddr = ntohl(tp->xt_inp.inp_laddr.s_addr);
-	all_oid->index.subs[1] = (inaddr >> 24) & 0xff;
-	all_oid->index.subs[2] = (inaddr >> 16) & 0xff;
-	all_oid->index.subs[3] = (inaddr >>  8) & 0xff;
-	all_oid->index.subs[4] = (inaddr >>  0) & 0xff;
-	all_oid->index.subs[5] = ntohs(tp->xt_inp.inp_lport);
-	all_oid->index.subs[6] = (uint32_t)IAT_ipv4;
+	all_oid->index.subs[2] = (inaddr >> 24) & 0xff;
+	all_oid->index.subs[3] = (inaddr >> 16) & 0xff;
+	all_oid->index.subs[4] = (inaddr >>  8) & 0xff;
+	all_oid->index.subs[5] = (inaddr >>  0) & 0xff;
+	all_oid->index.subs[6] = ntohs(tp->xt_inp.inp_lport);
+	all_oid->index.subs[7] = (uint32_t)IAT_ipv4;
+	all_oid->index.subs[8] = 4;
 	inaddr = ntohl(tp->xt_inp.inp_faddr.s_addr);
-	all_oid->index.subs[7] = (inaddr >> 24) & 0xff;
-	all_oid->index.subs[8] = (inaddr >> 16) & 0xff;
-	all_oid->index.subs[9] = (inaddr >>  8) & 0xff;
-	all_oid->index.subs[10] = (inaddr >>  0) & 0xff;
-	all_oid->index.subs[11] = ntohs(tp->xt_inp.inp_fport);
+	all_oid->index.subs[9] = (inaddr >> 24) & 0xff;
+	all_oid->index.subs[10] = (inaddr >> 16) & 0xff;
+	all_oid->index.subs[11] = (inaddr >>  8) & 0xff;
+	all_oid->index.subs[12] = (inaddr >>  0) & 0xff;
+	all_oid->index.subs[13] = ntohs(tp->xt_inp.inp_fport);
 	
 
 	all_oid->so_pgid = get_socket_pid(tp);
@@ -228,15 +230,17 @@
 	assert(all_oid != NULL);
 	assert(tp != NULL);
 	/*next is the encoding for the SNMP table index*/
-	all_oid->index.len = 36;
+	all_oid->index.len = 38;
 	all_oid->index.subs[0] = (uint32_t)IAT_ipv6;
+	all_oid->index.subs[1] = 16;
 	for (i=0; i<16; i++) {
-		all_oid->index.subs[1+i] = tp->xt_inp.in6p_laddr.s6_addr[i];
-		all_oid->index.subs[19+i] = tp->xt_inp.in6p_faddr.s6_addr[i];
+		all_oid->index.subs[2+i] = tp->xt_inp.in6p_laddr.s6_addr[i];
+		all_oid->index.subs[21+i] = tp->xt_inp.in6p_faddr.s6_addr[i];
 	}
-	all_oid->index.subs[17] = ntohs(tp->xt_inp.in6p_lport);
-	all_oid->index.subs[18] = (uint32_t)IAT_ipv6;
-	all_oid->index.subs[35] = ntohs(tp->xt_inp.in6p_fport);
+	all_oid->index.subs[18] = ntohs(tp->xt_inp.in6p_lport);
+	all_oid->index.subs[19] = (uint32_t)IAT_ipv6;
+	all_oid->index.subs[20] = 16;
+	all_oid->index.subs[37] = ntohs(tp->xt_inp.in6p_fport);
 	
 
 	all_oid->so_pgid = get_socket_pid(tp);
@@ -275,14 +279,14 @@
 		i++, _oid++ )
 	{
 		if ( _oid->index.subs[0] == (uint32_t)IAT_ipv6 ) {
-			if ( _oid->index.subs[17] == ntohs(tp->xt_inp.inp_lport) && 
+			if ( _oid->index.subs[18] == ntohs(tp->xt_inp.inp_lport) && 
 				listener_oid->so_pgid == _oid->so_pgid) {
 				L4_DPRINTF((stderr, "V4: [%s] Got listener with port %d.\n ", 
 					__func__,
-					_oid->index.subs[5])); 		
+					_oid->index.subs[18])); 		
 				
 				if (memcmp(&zero_ip6[0], 
-					&_oid->index.subs[1], 
+					&_oid->index.subs[2], 
 					sizeof(zero_ip6)) == 0) {
 					/*got it*/
 					_oid->index.len = 3;	
@@ -326,25 +330,25 @@
 		_oid != listener_oid && i < tcp_udp46_state_g.listen_tcpoids_len;
 		i++, _oid++ )
 	{
-		if ( _oid->index.subs[0] == (uint32_t)IAT_ipv4 ) {
-			if ( _oid->index.subs[5] == ntohs(tp->xt_inp.in6p_lport) && 
-			     listener_oid->so_pgid == _oid->so_pgid ) {
-				L4_DPRINTF((stderr, "[%s] Got listener with port %d.\n ", 
-					__func__,
-					_oid->index.subs[5])); 		
-						
-				if (memcmp(&zero_ip4[0], 
-					&_oid->index.subs[1], 
-					sizeof(zero_ip4)) == 0) {
-					/*got it*/	
-					_oid->index.len = 3;
-					_oid->index.subs[0] = (uint32_t)IAT_unknown;
-					_oid->index.subs[1] = 0; /*zero/ empty octet sting*/
-					_oid->index.subs[2] = ntohs(tp->xt_inp.in6p_lport);
-					return 1;
-				}
-			}
-		}	
+	  if ( _oid->index.subs[0] == (uint32_t)IAT_ipv4 ) {
+	    if ( _oid->index.subs[6] == ntohs(tp->xt_inp.in6p_lport) && 
+	     listener_oid->so_pgid == _oid->so_pgid ) {
+		L4_DPRINTF((stderr, "[%s] Got listener with port %d.\n ", 
+			__func__,
+			_oid->index.subs[6])); 		
+				
+		if (memcmp(&zero_ip4[0], 
+			&_oid->index.subs[2], 
+			sizeof(zero_ip4)) == 0) {
+			/*got it*/	
+			_oid->index.len = 3;
+			_oid->index.subs[0] = (uint32_t)IAT_unknown;
+			_oid->index.subs[1] = 0; /*zero/ empty octet sting*/
+			_oid->index.subs[2] = ntohs(tp->xt_inp.in6p_lport);
+			return 1;
+		}
+	    }
+	  }	
 	}
 	return 0;
 }
@@ -373,14 +377,16 @@
 		return 1;
 	}
 	/*next is the encoding for the SNMP table index*/
-	listener_oid->index.len = 6;
+	listener_oid->index.len = 7;
 	listener_oid->index.subs[0] = (uint32_t)IAT_ipv4;
+	listener_oid->index.subs[1] = 4;
+	
 	inaddr = ntohl(tp->xt_inp.inp_laddr.s_addr);
-	listener_oid->index.subs[1] = (inaddr >> 24) & 0xff;
-	listener_oid->index.subs[2] = (inaddr >> 16) & 0xff;
-	listener_oid->index.subs[3] = (inaddr >>  8) & 0xff;
-	listener_oid->index.subs[4] = (inaddr >>  0) & 0xff;
-	listener_oid->index.subs[5] = ntohs(tp->xt_inp.inp_lport);
+	listener_oid->index.subs[2] = (inaddr >> 24) & 0xff;
+	listener_oid->index.subs[3] = (inaddr >> 16) & 0xff;
+	listener_oid->index.subs[4] = (inaddr >>  8) & 0xff;
+	listener_oid->index.subs[5] = (inaddr >>  0) & 0xff;
+	listener_oid->index.subs[6] = ntohs(tp->xt_inp.inp_lport);
 	
 	
 	return 0;
@@ -412,12 +418,14 @@
 	}
 	
 	/*next is the encoding for the SNMP table index*/
-	listener_oid->index.len = 18;
+	listener_oid->index.len = 19;
 	listener_oid->index.subs[0] = (uint32_t)IAT_ipv6;
+	listener_oid->index.subs[1] = 16;
+	
 	for (i=0; i<16; i++) {
-		listener_oid->index.subs[1+i] = tp->xt_inp.in6p_laddr.s6_addr[i];
+		listener_oid->index.subs[2+i] = tp->xt_inp.in6p_laddr.s6_addr[i];
 	}
-	listener_oid->index.subs[17] = ntohs(tp->xt_inp.in6p_lport);
+	listener_oid->index.subs[18] = ntohs(tp->xt_inp.in6p_lport);
 	
 	
 	
@@ -720,15 +728,15 @@
 		if (conn->subs[0] == (uint32_t)IAT_ipv4) {
 			struct sockaddr_in *sinl, *sinr;
 		
-			assert(conn->len == 12);
-			if (conn->len != 12) {
+			assert(conn->len == 14);
+			if (conn->len != 14) {
 			  syslog(LOG_ERR, 
 			    "%s: malformed SNMP index (wrong length) when deleting a connection", 
 			    __func__);
 			    return -1;
 			}
 		
-			if (conn->subs[6] != (uint32_t)IAT_ipv4 ) {
+			if (conn->subs[7] != (uint32_t)IAT_ipv4 ) {
 			  syslog(LOG_ERR, 
 			  "%s: malformed SNMP index (remote not a v4) when deleting a connection", 
 			  __func__);
@@ -741,12 +749,12 @@
 			sinl = (struct sockaddr_in *)&addrs[1];
 			sinl->sin_len = sizeof(struct sockaddr_in); 
 			sinl->sin_addr.s_addr = htonl(
-				(conn->subs[1] << 24) | 
-				(conn->subs[2] << 16) |
-				(conn->subs[3] << 8)  |	
-				(conn->subs[4] << 0)
+				(conn->subs[2] << 24) | 
+				(conn->subs[3] << 16) |
+				(conn->subs[4] << 8)  |	
+				(conn->subs[5] << 0)
 			);
-			sinl->sin_port = htons(conn->subs[5]);
+			sinl->sin_port = htons(conn->subs[6]);
 			addrs[1].ss_family = AF_INET;		
 		
 			(void)inet_ntop(AF_INET, &sinl->sin_addr, local, 64);
@@ -758,36 +766,36 @@
 			sinr->sin_len = sizeof(struct sockaddr_in); 
 		
 			sinr->sin_addr.s_addr = htonl(
-				(conn->subs[7] << 24) | 
-				(conn->subs[8] << 16) |
-				(conn->subs[9] << 8)  |	
-				(conn->subs[10] << 0)
+				(conn->subs[9] << 24) | 
+				(conn->subs[10] << 16) |
+				(conn->subs[11] << 8)  |	
+				(conn->subs[12] << 0)
 			);
-			sinr->sin_port = htons(conn->subs[11]);
+			sinr->sin_port = htons(conn->subs[13]);
 			addrs[0].ss_family = AF_INET;
 		
 			(void)inet_ntop(AF_INET, &sinr->sin_addr, remote, 64);
 			syslog(LOG_INFO, 
-				"[%s] attempt to delete a tcp4 connection : local: %s:%d - remote: %s:%d \n ", 
-				__func__,
-				local,
-				conn->subs[5],
-				remote,
-				conn->subs[11]);
+			  "[%s] attempt to delete a tcp4 connection : local: %s:%d - remote: %s:%d \n ", 
+			  __func__,
+			  local,
+			  conn->subs[6],
+			  remote,
+			  conn->subs[13]);
 		
 		
 		} else if (conn->subs[0] == (uint32_t)IAT_ipv6) {
 			struct sockaddr_in6 *sin6l, *sin6r;
 			int i = 0;
-			assert(conn->len == 36);
-			if (conn->len != 36) {
+			assert(conn->len == 38);
+			if (conn->len != 38) {
 			  syslog(LOG_ERR, 
 			  "%s: malformed SNMP index (wrong length) when deleting a connection", 
 			  __func__);
 			  return -1;
 			}
 		
-			if (conn->subs[18] != (uint32_t)IAT_ipv6 ) {
+			if (conn->subs[19] != (uint32_t)IAT_ipv6 ) {
 			  syslog(LOG_ERR, 
 			  "%s: malformed SNMP index (remote not a v6) when deleting a connection", 
 			  __func__);
@@ -799,10 +807,10 @@
 			sin6l = (struct sockaddr_in6 *)&addrs[1];
 
 			for (i=0; i<16; i++) {
-				sin6l->sin6_addr.s6_addr[i] = conn->subs[1+i];
+				sin6l->sin6_addr.s6_addr[i] = conn->subs[2+i];
 			}	
 		
-			sin6l->sin6_port = htons(conn->subs[17]);
+			sin6l->sin6_port = htons(conn->subs[18]);
 #ifdef SIN6_LEN
 			sin6l->sin6_len = sizeof(struct sockaddr_in6);
 #endif /* SIN6_LEN */		
@@ -813,10 +821,10 @@
 			sin6r = (struct sockaddr_in6 *)&addrs[0];
 
 			for (i=0; i<16; i++) {
-				sin6r->sin6_addr.s6_addr[i] = conn->subs[19+i];
+				sin6r->sin6_addr.s6_addr[i] = conn->subs[21+i];
 			}	
 		
-			sin6r->sin6_port = htons(conn->subs[35]);
+			sin6r->sin6_port = htons(conn->subs[37]);
 #ifdef SIN6_LEN
 			sin6r->sin6_len = sizeof(struct sockaddr_in6);
 #endif /* SIN6_LEN */		
@@ -828,9 +836,9 @@
 				"[%s] attempt to delete a tcp6 connection: local: %s:%d - remote: %s:%d \n ", 
 				__func__,
 				local,
-				conn->subs[17],
+				conn->subs[18],
 				remote,
-				conn->subs[35]);
+				conn->subs[37]);
 
 		
 		} else {

==== //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_tcp_udp46/udp46_snmp.c#8 (text+ko) ====

@@ -150,28 +150,34 @@
 	in_addr_t inaddr;
 	u_int instance = 1;
 	static 
-	uint32_t zero_ip6[] ={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+	uint32_t 
+	zero_ip6[] ={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
 
 	assert(inp != NULL);
 	
 	pid_owner = get_endpoint_pid(inp); 
 	
 	for (i = 0, _oid = tcp_udp46_state_g.all_udpoids; 
-		i < tcp_udp46_state_g.all_udp_total; 
-		i++, _oid++) {
-		if ( _oid->inp == NULL) {
-			continue;
-		}
-		if ( 	_oid->index.subs[0] == (uint32_t)IAT_ipv4 
-			&& inp->xi_inp.inp_laddr.s_addr == _oid->inp->xi_inp.inp_laddr.s_addr 
-			&& inp->xi_inp.inp_lport == _oid->inp->xi_inp.inp_lport
-			&& inp->xi_inp.inp_faddr.s_addr == _oid->inp->xi_inp.inp_faddr.s_addr
-			&& inp->xi_inp.inp_fport == _oid->inp->xi_inp.inp_fport) {
+	  i < tcp_udp46_state_g.all_udp_total; 
+	  i++, _oid++) {
+	  if ( _oid->inp == NULL) {
+		continue;
+	  }
+	  if ( 	_oid->index.subs[0] == (uint32_t)IAT_ipv4 
+		&& 
+		inp->xi_inp.inp_laddr.s_addr == _oid->inp->xi_inp.inp_laddr.s_addr 
+		&& 
+		inp->xi_inp.inp_lport == _oid->inp->xi_inp.inp_lport
+		&& 
+		inp->xi_inp.inp_faddr.s_addr == _oid->inp->xi_inp.inp_faddr.s_addr
+		&& 
+		inp->xi_inp.inp_fport == _oid->inp->xi_inp.inp_fport) {
 			
 			if ( pid_owner	!= _oid->so_pgid ) {
 				instance++;
 			} else {
-				return (1); /*duplicate endpoint found*/	
+				/*duplicate endpoint found*/
+				return (1); 	
 			}
 		} 
 		/*check for an existent IPv6 endpoint bound to 0::0/128  */
@@ -181,15 +187,15 @@
 			    _oid->inp->xi_inp.in6p_lport  == inp->xi_inp.inp_lport && 
 				pid_owner == _oid->so_pgid) {
 				if (memcmp(&zero_ip6[0], 
-					&_oid->index.subs[1], 
+					&_oid->inp->xi_inp.in6p_laddr, 
 					sizeof(zero_ip6)) == 0
 				   && memcmp(&zero_ip6[0], 
-					&_oid->index.subs[19], 
+					&_oid->inp->xi_inp.in6p_faddr, 
 					sizeof(zero_ip6) ) == 0 ) {
 					/*got it*/
 					instance = 
 				  	 (IN6_IS_ADDR_UNSPECIFIED(&_oid->inp->xi_inp.in6p_faddr) ? 
-					  _oid->index.subs[21] : _oid->index.subs[36] );
+					  _oid->index.subs[22] : _oid->index.subs[38] );
 
 					_oid->index.len = 7;
 					_oid->index.subs[0] = (uint32_t)IAT_unknown;
@@ -204,36 +210,40 @@
 				}
 			}	
 
-		}/*end check for the same application bound to zero v4 & v6 address*/
+		}
+		/*end check for the same application bound to zero 
+		v4 & v6 address*/
 		
 	}
 	
 	all_oid->index.subs[0] = (uint32_t)IAT_ipv4;
+	all_oid->index.subs[1] = 4;
 	inaddr = ntohl(inp->xi_inp.inp_laddr.s_addr);
-	all_oid->index.subs[1] = (inaddr >> 24) & 0xff;
-	all_oid->index.subs[2] = (inaddr >> 16) & 0xff;
-	all_oid->index.subs[3] = (inaddr >>  8) & 0xff;
-	all_oid->index.subs[4] = (inaddr >>  0) & 0xff;
-	all_oid->index.subs[5] = ntohs(inp->xi_inp.inp_lport);
+	all_oid->index.subs[2] = (inaddr >> 24) & 0xff;
+	all_oid->index.subs[3] = (inaddr >> 16) & 0xff;
+	all_oid->index.subs[4] = (inaddr >>  8) & 0xff;
+	all_oid->index.subs[5] = (inaddr >>  0) & 0xff;
+	all_oid->index.subs[6] = ntohs(inp->xi_inp.inp_lport);
 	
 	if(inp->xi_inp.inp_faddr.s_addr == INADDR_ANY && 
 		inp->xi_inp.inp_fport == 0 ){
-		all_oid->index.len = 10;
-		all_oid->index.subs[6] = (uint32_t)IAT_unknown;
-		all_oid->index.subs[7] = 0; /*zero/ empty octet sting*/
-		all_oid->index.subs[8] = 0;
-		all_oid->index.subs[9] = instance;
+		all_oid->index.len = 11;
+		all_oid->index.subs[7] = (uint32_t)IAT_unknown;
+		all_oid->index.subs[8] = 0; /*zero/ empty octet sting*/
+		all_oid->index.subs[9] = 0; /*remote port*/
+		all_oid->index.subs[10] = instance;
 			
 	} else {	
-		all_oid->index.len = 13;
-		all_oid->index.subs[6] = (uint32_t)IAT_ipv4;
+		all_oid->index.len = 15;
+		all_oid->index.subs[7] = (uint32_t)IAT_ipv4;
+		all_oid->index.subs[8] = 4;
 		inaddr = ntohl(inp->xi_inp.inp_faddr.s_addr);
-		all_oid->index.subs[7] = (inaddr >> 24) & 0xff;
-		all_oid->index.subs[8] = (inaddr >> 16) & 0xff;
-		all_oid->index.subs[9] = (inaddr >>  8) & 0xff;
-		all_oid->index.subs[10] = (inaddr >>  0) & 0xff;
-		all_oid->index.subs[11] = ntohs(inp->xi_inp.inp_fport);
-		all_oid->index.subs[12] = instance;
+		all_oid->index.subs[9] = (inaddr >> 24) & 0xff;
+		all_oid->index.subs[10] = (inaddr >> 16) & 0xff;
+		all_oid->index.subs[11] = (inaddr >>  8) & 0xff;
+		all_oid->index.subs[12] = (inaddr >>  0) & 0xff;
+		all_oid->index.subs[13] = ntohs(inp->xi_inp.inp_fport);
+		all_oid->index.subs[14] = instance;
 	}
 	all_oid->so_pgid = pid_owner;
 	
@@ -286,7 +296,7 @@
 					/*got it*/
 					instance = 
 					  (_oid->inp->xi_inp.inp_faddr.s_addr == INADDR_ANY ? 
-					  _oid->index.subs[9] : _oid->index.subs[12] );
+					  _oid->index.subs[10] : _oid->index.subs[14] );
 					  
 					_oid->index.len = 7;
 					_oid->index.subs[0] = (uint32_t)IAT_unknown;
@@ -308,30 +318,33 @@
 	
 	if ( IN6_IS_ADDR_UNSPECIFIED(&inp->xi_inp.in6p_faddr) && 
 		inp->xi_inp.in6p_fport == 0 ) {
-		all_oid->index.len = 22;
+		all_oid->index.len = 23;
 
 		all_oid->index.subs[0] = (uint32_t)IAT_ipv6;
+		all_oid->index.subs[1] = 16;
 		for (i=0; i<16; i++) {
-			all_oid->index.subs[1+i] = inp->xi_inp.in6p_laddr.s6_addr[i];
+			all_oid->index.subs[2+i] = inp->xi_inp.in6p_laddr.s6_addr[i];
 		}
-		all_oid->index.subs[17] = ntohs(inp->xi_inp.in6p_lport);
-		all_oid->index.subs[18] = (uint32_t)IAT_unknown;
-		all_oid->index.subs[19] = 0;
-		all_oid->index.subs[20] = 0;
-		all_oid->index.subs[21] = instance;
+		all_oid->index.subs[18] = ntohs(inp->xi_inp.in6p_lport);
+		all_oid->index.subs[19] = (uint32_t)IAT_unknown;
+		all_oid->index.subs[20] = 0;	/*remote addess, zero octet string*/
+		all_oid->index.subs[21] = 0;	/*remote port*/
+		all_oid->index.subs[22] = instance;
 			
 	} else {	
-		all_oid->index.len = 37;
+		all_oid->index.len = 39;
 
 		all_oid->index.subs[0] = (uint32_t)IAT_ipv6;
+		all_oid->index.subs[0] = 16;
 		for (i=0; i<16; i++) {
-			all_oid->index.subs[1+i] = inp->xi_inp.in6p_laddr.s6_addr[i];
-			all_oid->index.subs[19+i] = inp->xi_inp.in6p_faddr.s6_addr[i];
+			all_oid->index.subs[2+i] = inp->xi_inp.in6p_laddr.s6_addr[i];
+			all_oid->index.subs[21+i] = inp->xi_inp.in6p_faddr.s6_addr[i];
 		}
-		all_oid->index.subs[17] = ntohs(inp->xi_inp.in6p_lport);
-		all_oid->index.subs[18] = (uint32_t)IAT_ipv6;
-		all_oid->index.subs[35] = ntohs(inp->xi_inp.in6p_fport);
-		all_oid->index.subs[36] = instance;
+		all_oid->index.subs[18] = ntohs(inp->xi_inp.in6p_lport);
+		all_oid->index.subs[19] = (uint32_t)IAT_ipv6;
+		all_oid->index.subs[20] = 16;
+		all_oid->index.subs[37] = ntohs(inp->xi_inp.in6p_fport);
+		all_oid->index.subs[38] = instance;
 	}	
 	
 	all_oid->so_pgid = pid_owner;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200509081838.j88IcWgs059875>