Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Oct 2013 13:33:48 +0000 (UTC)
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r256627 - user/ae/inet6/sys/netinet6
Message-ID:  <201310161333.r9GDXmol037557@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ae
Date: Wed Oct 16 13:33:48 2013
New Revision: 256627
URL: http://svnweb.freebsd.org/changeset/base/256627

Log:
  RTFREE() sets ro_rt to NULL, no need to do it again. Also properly
  initialize ro_dst for IPV6_NEXTHOP socket option.

Modified:
  user/ae/inet6/sys/netinet6/ip6_output.c

Modified: user/ae/inet6/sys/netinet6/ip6_output.c
==============================================================================
--- user/ae/inet6/sys/netinet6/ip6_output.c	Wed Oct 16 13:23:47 2013	(r256626)
+++ user/ae/inet6/sys/netinet6/ip6_output.c	Wed Oct 16 13:33:48 2013	(r256627)
@@ -2434,13 +2434,11 @@ ip6_clearpktopts(struct ip6_pktopts *pkt
 	if (optname == -1 || optname == IPV6_TCLASS)
 		pktopt->ip6po_tclass = -1;
 	if (optname == -1 || optname == IPV6_NEXTHOP) {
-		if (pktopt->ip6po_nextroute.ro_rt) {
+		if (pktopt->ip6po_nextroute.ro_rt)
 			RTFREE(pktopt->ip6po_nextroute.ro_rt);
-			pktopt->ip6po_nextroute.ro_rt = NULL;
-		}
 		if (pktopt->ip6po_nexthop)
 			free(pktopt->ip6po_nexthop, M_IP6OPT);
-		pktopt->ip6po_nexthop = NULL;
+		bzero(&pktopt->ip6po_nhinfo, sizeof(pktopt->ip6po_nhinfo));
 	}
 	if (optname == -1 || optname == IPV6_HOPOPTS) {
 		if (pktopt->ip6po_hbh)
@@ -2456,10 +2454,8 @@ ip6_clearpktopts(struct ip6_pktopts *pkt
 		if (pktopt->ip6po_rhinfo.ip6po_rhi_rthdr)
 			free(pktopt->ip6po_rhinfo.ip6po_rhi_rthdr, M_IP6OPT);
 		pktopt->ip6po_rhinfo.ip6po_rhi_rthdr = NULL;
-		if (pktopt->ip6po_route.ro_rt) {
+		if (pktopt->ip6po_route.ro_rt)
 			RTFREE(pktopt->ip6po_route.ro_rt);
-			pktopt->ip6po_route.ro_rt = NULL;
-		}
 	}
 	if (optname == -1 || optname == IPV6_DSTOPTS) {
 		if (pktopt->ip6po_dest2)
@@ -2822,6 +2818,7 @@ ip6_setpktopt(int optname, u_char *buf, 
 		if (opt->ip6po_nexthop == NULL)
 			return (ENOBUFS);
 		bcopy(buf, opt->ip6po_nexthop, *buf);
+		bcopy(buf, &opt->ip6po_nextroute.ro_dst, *buf);
 		break;
 
 	case IPV6_2292HOPOPTS:



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