Mercurial > illumos > fmac
changeset 2428:31f1987cf127 onnv_45
4984993 ping -v <ipv6 address> broken
6429228 fix for 6281206 causes continuous update_ra_flags error messages on the console
6441279 ndpd log API should be const correct
author | mh138676 |
---|---|
date | Mon, 24 Jul 2006 21:00:20 -0700 |
parents | 098be5c54062 |
children | d2b380bdc797 |
files | usr/src/cmd/cmd-inet/usr.lib/in.ndpd/defs.h usr/src/cmd/cmd-inet/usr.lib/in.ndpd/main.c usr/src/cmd/cmd-inet/usr.lib/in.ndpd/ndp.c usr/src/cmd/cmd-inet/usr.lib/in.ndpd/tables.h usr/src/cmd/cmd-inet/usr.sbin/ping/ping.c |
diffstat | 5 files changed, 25 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/cmd/cmd-inet/usr.lib/in.ndpd/defs.h Mon Jul 24 20:05:31 2006 -0700 +++ b/usr/src/cmd/cmd-inet/usr.lib/in.ndpd/defs.h Mon Jul 24 21:00:20 2006 -0700 @@ -2,9 +2,8 @@ * CDDL HEADER START * * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2003 Sun Microsystems, Inc. All rights reserved. + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -64,6 +63,8 @@ #include <netinet/icmp6.h> #include <net/route.h> +#include "tables.h" + #ifdef __cplusplus extern "C" { #endif @@ -130,8 +131,10 @@ #define MAXARGSPERLINE 128 void timer_schedule(uint_t delay); -extern void logmsg(int level, char *fmt, ...); -extern void logperror(char *str); +extern void logmsg(int level, const char *fmt, ...); +extern void logperror(const char *str); +extern void logperror_pi(const struct phyint *pi, const char *str); +extern void logperror_pr(const struct prefix *pr, const char *str); extern int parse_config(char *config_file, boolean_t file_required); extern int poll_add(int fd);
--- a/usr/src/cmd/cmd-inet/usr.lib/in.ndpd/main.c Mon Jul 24 20:05:31 2006 -0700 +++ b/usr/src/cmd/cmd-inet/usr.lib/in.ndpd/main.c Mon Jul 24 21:00:20 2006 -0700 @@ -1965,7 +1965,7 @@ /* PRINTFLIKE1 */ void -logmsg(int level, char *fmt, ...) +logmsg(int level, const char *fmt, ...) { va_list ap; va_start(ap, fmt); @@ -1980,7 +1980,7 @@ } void -logperror(char *str) +logperror(const char *str) { if (logging) { syslog(LOG_ERR, "%s: %m\n", str); @@ -1991,7 +1991,7 @@ } void -logperror_pi(struct phyint *pi, char *str) +logperror_pi(const struct phyint *pi, const char *str) { if (logging) { syslog(LOG_ERR, "%s (interface %s): %m\n", @@ -2004,7 +2004,7 @@ } void -logperror_pr(struct prefix *pr, char *str) +logperror_pr(const struct prefix *pr, const char *str) { if (logging) { syslog(LOG_ERR, "%s (prefix %s if %s): %m\n",
--- a/usr/src/cmd/cmd-inet/usr.lib/in.ndpd/ndp.c Mon Jul 24 20:05:31 2006 -0700 +++ b/usr/src/cmd/cmd-inet/usr.lib/in.ndpd/ndp.c Mon Jul 24 21:00:20 2006 -0700 @@ -65,7 +65,7 @@ static void verify_mtu_opt(struct phyint *pi, uchar_t *opt, char *frombuf); -static void update_ra_flag(struct phyint *pi, +static void update_ra_flag(const struct phyint *pi, const struct sockaddr_in6 *from, int isrouter); static uint_t ra_flags; /* Global to detect when to trigger DHCP */ @@ -445,7 +445,7 @@ opt = (struct nd_opt_hdr *)((char *)opt + optlen); len -= optlen; } - if (!slla_opt_present) + if (!loopback && !slla_opt_present) update_ra_flag(pi, from, NDF_ISROUTER_ON); /* Stop sending solicitations */ check_to_solicit(pi, SOLICIT_DONE); @@ -1364,7 +1364,8 @@ * Update IsRouter Flag for Host turning into a router or vice-versa. */ static void -update_ra_flag(struct phyint *pi, const struct sockaddr_in6 *from, int isrouter) +update_ra_flag(const struct phyint *pi, const struct sockaddr_in6 *from, + int isrouter) { struct lifreq lifr; char abuf[INET6_ADDRSTRLEN]; @@ -1386,7 +1387,14 @@ (void) strlcpy(lifr.lifr_name, pi->pi_name, sizeof (lifr.lifr_name)); if (ioctl(pi->pi_sock, SIOCLIFGETND, (char *)&lifr) < 0) { - logperror_pi(pi, "update_ra_flag: SIOCLIFGETND"); + if (errno == ESRCH) { + if (debug & D_IFSCAN) { + logmsg(LOG_DEBUG, +"update_ra_flag: SIOCLIFGETND: nce doesn't exist, not setting IFF_ROUTER"); + } + } else { + logperror_pi(pi, "update_ra_flag: SIOCLIFGETND"); + } } else { /* * The lif_nd_req structure has three state values to be used
--- a/usr/src/cmd/cmd-inet/usr.lib/in.ndpd/tables.h Mon Jul 24 20:05:31 2006 -0700 +++ b/usr/src/cmd/cmd-inet/usr.lib/in.ndpd/tables.h Mon Jul 24 21:00:20 2006 -0700 @@ -323,8 +323,6 @@ extern uint_t router_timer(struct router *dr, uint_t elapsed); -extern void logperror_pi(struct phyint *pi, char *str); -extern void logperror_pr(struct prefix *pr, char *str); extern void check_to_advertise(struct phyint *pi, enum adv_events event); extern void check_to_solicit(struct phyint *pi, enum solicit_events event);
--- a/usr/src/cmd/cmd-inet/usr.sbin/ping/ping.c Mon Jul 24 20:05:31 2006 -0700 +++ b/usr/src/cmd/cmd-inet/usr.sbin/ping/ping.c Mon Jul 24 21:00:20 2006 -0700 @@ -1471,13 +1471,6 @@ progname, strerror(errno)); exit(EXIT_FAILURE); } - if (setsockopt(recv_sock, IPPROTO_IPV6, IPV6_RECVRTHDRDSTOPTS, - (char *)&on, sizeof (on)) == -1) { - Fprintf(stderr, - "%s: setsockopt IPV6_RECVRTHDRDSTOPTS %s\n", - progname, strerror(errno)); - exit(EXIT_FAILURE); - } } *send_sockp = send_sock;