svn commit: r279956 - head/sbin/ipfw
Andrey V. Elsukov
ae at FreeBSD.org
Fri Mar 13 13:46:51 UTC 2015
Author: ae
Date: Fri Mar 13 13:46:50 2015
New Revision: 279956
URL: https://svnweb.freebsd.org/changeset/base/279956
Log:
Properly initialize scope zone id when next hop address stored
directly in the O_FORWARD_IP6 opcode. Use getnameinfo(3) to formatting
the IPv6 addresses of such opcodes.
Obtained from: Yandex LLC
Sponsored by: Yandex LLC
Modified:
head/sbin/ipfw/ipfw2.c
Modified: head/sbin/ipfw/ipfw2.c
==============================================================================
--- head/sbin/ipfw/ipfw2.c Fri Mar 13 12:44:46 2015 (r279955)
+++ head/sbin/ipfw/ipfw2.c Fri Mar 13 13:46:50 2015 (r279956)
@@ -1525,11 +1525,14 @@ show_static_rule(struct cmdline_opts *co
case O_FORWARD_IP6:
{
- char buf[4 + INET6_ADDRSTRLEN + 1];
+ char buf[INET6_ADDRSTRLEN + IF_NAMESIZE + 2];
ipfw_insn_sa6 *s = (ipfw_insn_sa6 *)cmd;
- bprintf(bp, "fwd %s", inet_ntop(AF_INET6,
- &s->sa.sin6_addr, buf, sizeof(buf)));
+ bprintf(bp, "fwd ");
+ if (getnameinfo((const struct sockaddr *)&s->sa,
+ sizeof(struct sockaddr_in6), buf, sizeof(buf),
+ NULL, 0, NI_NUMERICHOST) == 0)
+ bprintf(bp, "%s", buf);
if (s->sa.sin6_port)
bprintf(bp, ",%d", s->sa.sin6_port);
}
@@ -3741,8 +3744,8 @@ chkarg:
p->sa.sin6_family = AF_INET6;
p->sa.sin6_port = port_number;
p->sa.sin6_flowinfo = 0;
- p->sa.sin6_scope_id = 0;
- /* No table support for v6 yet. */
+ p->sa.sin6_scope_id =
+ ((struct sockaddr_in6 *)&result)->sin6_scope_id;
bcopy(&((struct sockaddr_in6*)&result)->sin6_addr,
&p->sa.sin6_addr, sizeof(p->sa.sin6_addr));
} else {
More information about the svn-src-all
mailing list