From owner-svn-src-stable-12@freebsd.org Sat Nov 17 20:54:26 2018 Return-Path: Delivered-To: svn-src-stable-12@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AC1BC110543C; Sat, 17 Nov 2018 20:54:26 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 526E37E881; Sat, 17 Nov 2018 20:54:26 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3380D1535; Sat, 17 Nov 2018 20:54:26 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wAHKsPsk078470; Sat, 17 Nov 2018 20:54:25 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id wAHKsOV2078465; Sat, 17 Nov 2018 20:54:24 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201811172054.wAHKsOV2078465@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Sat, 17 Nov 2018 20:54:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r340521 - stable/12/usr.sbin/rtsold X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: stable/12/usr.sbin/rtsold X-SVN-Commit-Revision: 340521 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 526E37E881 X-Spamd-Result: default: False [0.05 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_SPAM_SHORT(0.05)[0.052,0] X-Rspamd-Server: mx1.freebsd.org X-BeenThere: svn-src-stable-12@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for only the 12-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Nov 2018 20:54:26 -0000 Author: markj Date: Sat Nov 17 20:54:24 2018 New Revision: 340521 URL: https://svnweb.freebsd.org/changeset/base/340521 Log: MFC r339453, r339455, r339456, r339460, r339687, r339745, r339747: Miscellaneous cleanups of rtsol(d). Modified: stable/12/usr.sbin/rtsold/if.c stable/12/usr.sbin/rtsold/rtsock.c stable/12/usr.sbin/rtsold/rtsol.c stable/12/usr.sbin/rtsold/rtsold.8 stable/12/usr.sbin/rtsold/rtsold.c stable/12/usr.sbin/rtsold/rtsold.h Directory Properties: stable/12/ (props changed) Modified: stable/12/usr.sbin/rtsold/if.c ============================================================================== --- stable/12/usr.sbin/rtsold/if.c Sat Nov 17 20:47:41 2018 (r340520) +++ stable/12/usr.sbin/rtsold/if.c Sat Nov 17 20:54:24 2018 (r340521) @@ -332,37 +332,6 @@ if_nametosdl(char *name) return (ret_sdl); } -int -getinet6sysctl(int code) -{ - int mib[] = { CTL_NET, PF_INET6, IPPROTO_IPV6, 0 }; - int value; - size_t size; - - mib[3] = code; - size = sizeof(value); - if (sysctl(mib, nitems(mib), &value, &size, NULL, 0) < 0) - return (-1); - else - return (value); -} - -int -setinet6sysctl(int code, int newval) -{ - int mib[] = { CTL_NET, PF_INET6, IPPROTO_IPV6, 0 }; - int value; - size_t size; - - mib[3] = code; - size = sizeof(value); - if (sysctl(mib, nitems(mib), &value, &size, - &newval, sizeof(newval)) < 0) - return (-1); - else - return (value); -} - /*------------------------------------------------------------*/ /* get ia6_flags for link-local addr on if. returns -1 on error. */ Modified: stable/12/usr.sbin/rtsold/rtsock.c ============================================================================== --- stable/12/usr.sbin/rtsold/rtsock.c Sat Nov 17 20:47:41 2018 (r340520) +++ stable/12/usr.sbin/rtsold/rtsock.c Sat Nov 17 20:54:24 2018 (r340521) @@ -57,27 +57,15 @@ #include #include "rtsold.h" -#define ROUNDUP(a, size) \ - (((a) & ((size)-1)) ? (1 + ((a) | ((size)-1))) : (a)) - -#define NEXT_SA(ap) (ap) = (struct sockaddr *) \ - ((caddr_t)(ap) + \ - ((ap)->sa_len ? ROUNDUP((ap)->sa_len, sizeof(u_long)) \ - : sizeof(u_long))) - -#ifdef RTM_IFANNOUNCE /*NetBSD 1.5 or later*/ static int rtsock_input_ifannounce(int, struct rt_msghdr *, char *); -#endif static struct { u_char type; size_t minlen; int (*func)(int, struct rt_msghdr *, char *); } rtsock_dispatch[] = { -#ifdef RTM_IFANNOUNCE /*NetBSD 1.5 or later*/ { RTM_IFANNOUNCE, sizeof(struct if_announcemsghdr), rtsock_input_ifannounce }, -#endif { 0, 0, NULL }, }; @@ -135,7 +123,6 @@ rtsock_input(int s) return (ret); } -#ifdef RTM_IFANNOUNCE /*NetBSD 1.5 or later*/ static int rtsock_input_ifannounce(int s __unused, struct rt_msghdr *rtm, char *lim) { @@ -174,4 +161,3 @@ rtsock_input_ifannounce(int s __unused, struct rt_msgh return (0); } -#endif Modified: stable/12/usr.sbin/rtsold/rtsol.c ============================================================================== --- stable/12/usr.sbin/rtsold/rtsol.c Sat Nov 17 20:47:41 2018 (r340520) +++ stable/12/usr.sbin/rtsold/rtsol.c Sat Nov 17 20:54:24 2018 (r340521) @@ -98,22 +98,20 @@ static char *make_rsid(const char *, const char *, str #define _ARGS_RESADD resolvconf_script, "-a", rsid #define _ARGS_RESDEL resolvconf_script, "-d", rsid -#define CALL_SCRIPT(name, sm_head) \ - do { \ - const char *const sarg[] = { _ARGS_##name, NULL }; \ - call_script(sizeof(sarg), sarg, sm_head); \ - } while(0) +#define CALL_SCRIPT(name, sm_head) do { \ + const char *const sarg[] = { _ARGS_##name, NULL }; \ + call_script(sizeof(sarg), sarg, sm_head); \ +} while (0) -#define ELM_MALLOC(p,error_action) \ - do { \ - p = malloc(sizeof(*p)); \ - if (p == NULL) { \ - warnmsg(LOG_ERR, __func__, "malloc failed: %s", \ - strerror(errno)); \ - error_action; \ - } \ - memset(p, 0, sizeof(*p)); \ - } while(0) +#define ELM_MALLOC(p, error_action) do { \ + p = malloc(sizeof(*p)); \ + if (p == NULL) { \ + warnmsg(LOG_ERR, __func__, "malloc failed: %s", \ + strerror(errno)); \ + error_action; \ + } \ + memset(p, 0, sizeof(*p)); \ +} while (0) int sockopen(void) @@ -616,7 +614,6 @@ ra_opt_handler(struct ifinfo *ifi) TAILQ_INSERT_TAIL(&sm_rdnss_head, smp3, sm_next); ifi->ifi_rdnss = IFI_DNSOPT_STATE_RECEIVED; - break; case ND_OPT_DNSSL: if (TS_CMP(&now, &rao->rao_expire, >)) { @@ -656,10 +653,7 @@ ra_opt_handler(struct ifinfo *ifi) sm_next); dlen += strlen(rao->rao_msg) + strlen(resstr_sp); - break; - ifi->ifi_dnssl = IFI_DNSOPT_STATE_RECEIVED; - default: break; } continue; @@ -701,13 +695,12 @@ make_rsid(const char *ifname, const char *origin, stru } int -ra_opt_rdnss_dispatch(struct ifinfo *ifi, - struct rainfo *rai, +ra_opt_rdnss_dispatch(struct ifinfo *ifi, struct rainfo *rai, struct script_msg_head_t *sm_rdnss_head, struct script_msg_head_t *sm_dnssl_head) { - const char *r; struct script_msg *smp1; + const char *r; int error; error = 0; @@ -719,10 +712,7 @@ ra_opt_rdnss_dispatch(struct ifinfo *ifi, } TAILQ_CONCAT(sm_rdnss_head, sm_dnssl_head, sm_next); - if (rai != NULL && uflag) - r = make_rsid(ifi->ifname, DNSINFO_ORIGIN_LABEL, rai); - else - r = make_rsid(ifi->ifname, DNSINFO_ORIGIN_LABEL, NULL); + r = make_rsid(ifi->ifname, DNSINFO_ORIGIN_LABEL, uflag ? rai : NULL); if (r == NULL) { warnmsg(LOG_ERR, __func__, "make_rsid() failed. " "Script was not invoked."); Modified: stable/12/usr.sbin/rtsold/rtsold.8 ============================================================================== --- stable/12/usr.sbin/rtsold/rtsold.8 Sat Nov 17 20:47:41 2018 (r340520) +++ stable/12/usr.sbin/rtsold/rtsold.8 Sat Nov 17 20:54:24 2018 (r340521) @@ -241,16 +241,16 @@ The .Xr resolvconf 8 script is used by default. .It Fl u -Specifies whether adding the source address of Router Advertisement -messages to the interface name in an argument of the RDNSS and DNSSL -script. +Specifies whether to add the source address of Router Advertisement +messages to the interface name in the parameters of the RDNSS and DNSSL +scripts. .Pp If .Fl u -is specified, the interface name in the script argument will be +is specified, the interface name in the script parameters will be .Ql ifname:slaac:[RA-source-address] . .Pp -If not, it will be +Otherwise it will be .Ql ifname:slaac . .El .Sh FILES Modified: stable/12/usr.sbin/rtsold/rtsold.c ============================================================================== --- stable/12/usr.sbin/rtsold/rtsold.c Sat Nov 17 20:47:41 2018 (r340520) +++ stable/12/usr.sbin/rtsold/rtsold.c Sat Nov 17 20:54:24 2018 (r340521) @@ -33,10 +33,9 @@ * $FreeBSD$ */ -#include +#include #include #include -#include #include #include @@ -98,10 +97,8 @@ static int do_dump; static const char *dumpfilename = RTSOL_DUMPFILE; #endif -#if 0 -static int ifreconfig(char *); -#endif - +static char **autoifprobe(void); +static int ifconfig(char *ifname); static int make_packet(struct ifinfo *); static struct timespec *rtsol_check_timer(void); @@ -217,16 +214,6 @@ main(int argc, char **argv) pidfilename); } -#if (__FreeBSD_version < 900000) - if (Fflag) { - setinet6sysctl(IPV6CTL_FORWARDING, 0); - } else { - /* warn if forwarding is up */ - if (getinet6sysctl(IPV6CTL_FORWARDING)) - warnx("kernel is configured as a router, not a host"); - } -#endif - #ifndef SMALL /* initialization to dump internal status to a file */ signal(SIGUSR1, rtsold_set_dump_file); @@ -340,23 +327,23 @@ main(int argc, char **argv) return (0); } -int +static int ifconfig(char *ifname) { struct ifinfo *ifi; struct sockaddr_dl *sdl; int flags; + ifi = NULL; if ((sdl = if_nametosdl(ifname)) == NULL) { warnmsg(LOG_ERR, __func__, "failed to get link layer information for %s", ifname); - return (-1); + goto bad; } if (find_ifinfo(sdl->sdl_index)) { warnmsg(LOG_ERR, __func__, "interface %s was already configured", ifname); - free(sdl); - return (-1); + goto bad; } if (Fflag) { @@ -365,30 +352,29 @@ ifconfig(char *ifname) if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { warnmsg(LOG_ERR, __func__, "socket() failed."); - return (-1); + goto bad; } memset(&nd, 0, sizeof(nd)); strlcpy(nd.ifname, ifname, sizeof(nd.ifname)); if (ioctl(s, SIOCGIFINFO_IN6, (caddr_t)&nd) < 0) { warnmsg(LOG_ERR, __func__, "cannot get accept_rtadv flag"); - close(s); - return (-1); + (void)close(s); + goto bad; } nd.ndi.flags |= ND6_IFF_ACCEPT_RTADV; if (ioctl(s, SIOCSIFINFO_IN6, (caddr_t)&nd) < 0) { warnmsg(LOG_ERR, __func__, "cannot set accept_rtadv flag"); - close(s); - return (-1); + (void)close(s); + goto bad; } - close(s); + (void)close(s); } if ((ifi = malloc(sizeof(*ifi))) == NULL) { warnmsg(LOG_ERR, __func__, "memory allocation failed"); - free(sdl); - return (-1); + goto bad; } memset(ifi, 0, sizeof(*ifi)); ifi->sdl = sdl; @@ -439,53 +425,11 @@ ifconfig(char *ifname) return (0); bad: - free(ifi->sdl); + free(sdl); free(ifi); return (-1); } -void -iflist_init(void) -{ - struct ifinfo *ifi; - - while ((ifi = TAILQ_FIRST(&ifinfo_head)) != NULL) { - TAILQ_REMOVE(&ifinfo_head, ifi, ifi_next); - if (ifi->sdl != NULL) - free(ifi->sdl); - if (ifi->rs_data != NULL) - free(ifi->rs_data); - free(ifi); - } -} - -#if 0 -static int -ifreconfig(char *ifname) -{ - struct ifinfo *ifi, *prev; - int rv; - - prev = NULL; - TAILQ_FOREACH(ifi, &ifinfo_head, ifi_next) { - if (strncmp(ifi->ifname, ifname, sizeof(ifi->ifname)) == 0) - break; - prev = ifi; - } - prev->next = ifi->next; - - rv = ifconfig(ifname); - - /* reclaim it after ifconfig() in case ifname is pointer inside ifi */ - if (ifi->rs_data) - free(ifi->rs_data); - free(ifi->sdl); - free(ifi); - - return (rv); -} -#endif - struct rainfo * find_rainfo(struct ifinfo *ifi, struct sockaddr_in6 *sin6) { @@ -767,9 +711,6 @@ rtsol_timer_update(struct ifinfo *ifi) #undef MILLION } -/* timer related utility functions */ -#define MILLION 1000000 - #ifndef SMALL static void rtsold_set_dump_file(int sig __unused) @@ -817,7 +758,7 @@ warnmsg(int priority, const char *func, const char *ms /* * return a list of interfaces which is suitable to sending an RS. */ -char ** +static char ** autoifprobe(void) { static char **argv = NULL; Modified: stable/12/usr.sbin/rtsold/rtsold.h ============================================================================== --- stable/12/usr.sbin/rtsold/rtsold.h Sat Nov 17 20:47:41 2018 (r340520) +++ stable/12/usr.sbin/rtsold/rtsold.h Sat Nov 17 20:54:24 2018 (r340521) @@ -157,14 +157,11 @@ extern int Fflag; extern int uflag; extern const char *otherconf_script; extern const char *resolvconf_script; -extern int ifconfig(char *); -extern void iflist_init(void); struct ifinfo *find_ifinfo(int); struct rainfo *find_rainfo(struct ifinfo *, struct sockaddr_in6 *); void rtsol_timer_update(struct ifinfo *); extern void warnmsg(int, const char *, const char *, ...) __attribute__((__format__(__printf__, 3, 4))); -extern char **autoifprobe(void); extern int ra_opt_handler(struct ifinfo *); /* if.c */ @@ -174,8 +171,6 @@ extern int interface_status(struct ifinfo *); extern int lladdropt_length(struct sockaddr_dl *); extern void lladdropt_fill(struct sockaddr_dl *, struct nd_opt_hdr *); extern struct sockaddr_dl *if_nametosdl(char *); -extern int getinet6sysctl(int); -extern int setinet6sysctl(int, int); /* rtsol.c */ extern int rssock;