svn commit: r256627 - user/ae/inet6/sys/netinet6
Andrey V. Elsukov
ae at FreeBSD.org
Wed Oct 16 13:33:48 UTC 2013
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:
More information about the svn-src-user
mailing list