ok with one question. Florian Obser(flor...@openbsd.org) on 2017.07.11 19:29:44 +0000: > replace > log_warnx("foo"): > exit(1); > with > fatalx("foo): > > OK? > > diff --git config.c config.c > index 85d14efedca..e6f48fffec7 100644 > --- config.c > +++ config.c > @@ -85,9 +85,8 @@ getconfig(char *intface) > do { \ > int64_t t; \ > if ((t = agetnum(cap)) < 0) { \ > - log_warnx("need %s for interface %s", \ > + fatalx("need %s for interface %s", \ > cap, intface); \ > - exit(1); \ > } \ > var = t; \ > } while (0) > @@ -129,10 +128,9 @@ getconfig(char *intface) > else > tmp->advlinkopt = 1; > if (tmp->advlinkopt) { > - if ((tmp->sdl = if_nametosdl(intface)) == NULL) { > - log_warnx("can't get information of %s", intface); > - exit(1); > - } > + if ((tmp->sdl = if_nametosdl(intface)) == NULL) > + fatalx("can't get information of %s", intface); > + > tmp->ifindex = tmp->sdl->sdl_index; > } else > tmp->ifindex = if_nametoindex(intface); > @@ -146,20 +144,18 @@ getconfig(char *intface) > * set router configuration variables. > */ > MAYHAVE(val, "maxinterval", DEF_MAXRTRADVINTERVAL); > - if (val < MIN_MAXINTERVAL || val > MAX_MAXINTERVAL) { > - log_warnx("maxinterval (%ld) on %s is invalid " > + if (val < MIN_MAXINTERVAL || val > MAX_MAXINTERVAL) > + fatalx("maxinterval (%ld) on %s is invalid " > "(must be between %u and %u)", val, > intface, MIN_MAXINTERVAL, MAX_MAXINTERVAL); > - exit(1); > - } > + > tmp->maxinterval = (u_int)val; > MAYHAVE(val, "mininterval", tmp->maxinterval/3); > - if (val < MIN_MININTERVAL || val > (tmp->maxinterval * 3) / 4) { > - log_warnx("mininterval (%ld) on %s is invalid " > + if (val < MIN_MININTERVAL || val > (tmp->maxinterval * 3) / 4) > + fatalx("mininterval (%ld) on %s is invalid " > "(must be between %u and %u)", > val, intface, MIN_MININTERVAL, (tmp->maxinterval * 3) / 4); > - exit(1); > - } > + > tmp->mininterval = (u_int)val; > > MAYHAVE(val, "chlim", DEF_ADVCURHOPLIMIT); > @@ -169,20 +165,17 @@ getconfig(char *intface) > tmp->managedflg = val & ND_RA_FLAG_MANAGED; > tmp->otherflg = val & ND_RA_FLAG_OTHER; > tmp->rtpref = val & ND_RA_FLAG_RTPREF_MASK; > - if (tmp->rtpref == ND_RA_FLAG_RTPREF_RSV) { > - log_warnx("invalid router preference (%02x) on %s", > + if (tmp->rtpref == ND_RA_FLAG_RTPREF_RSV) > + fatalx("invalid router preference (%02x) on %s", > tmp->rtpref, intface); > - exit(1); > - } > > MAYHAVE(val, "rltime", tmp->maxinterval * 3); > - if (val && (val < tmp->maxinterval || val > MAX_ROUTERLIFETIME)) { > - log_warnx("router lifetime (%ld) on %s is invalid " > + if (val && (val < tmp->maxinterval || val > MAX_ROUTERLIFETIME)) > + fatalx("router lifetime (%ld) on %s is invalid " > "(must be 0 or between %d and %d)", > val, intface, > tmp->maxinterval, MAX_ROUTERLIFETIME); > - exit(1); > - } > + > /* > * Basically, hosts MUST NOT send Router Advertisement messages at any > * time (RFC 2461, Section 6.2.3). However, it would sometimes be > @@ -191,36 +184,32 @@ getconfig(char *intface) > * only when router lifetime (on every advertising interface) is > * explicitely set to zero. (see also the above section) > */ > - if (val && forwarding == 0) { > - log_warnx("non zero router lifetime is specified for %s, " > + if (val && forwarding == 0) > + fatalx("non zero router lifetime is specified for %s, " > "which must not be allowed for hosts. you must " > "change router lifetime or enable IPv6 forwarding.", > intface); > - exit(1); > - } > + > tmp->lifetime = val & 0xffff; > > MAYHAVE(val, "rtime", DEF_ADVREACHABLETIME); > - if (val < 0 || val > MAX_REACHABLETIME) { > + if (val < 0 || val > MAX_REACHABLETIME) > log_warnx("reachable time (%ld) on %s is invalid" > " (must be no greater than %d)", > val, intface, MAX_REACHABLETIME); > - exit(1); > - } > + > tmp->reachabletime = (u_int32_t)val; > > MAYHAVE(val64, "retrans", DEF_ADVRETRANSTIMER); > - if (val64 < 0 || val64 > 0xffffffff) { > - log_warnx("retrans time (%lld) on %s out of range", > + if (val64 < 0 || val64 > 0xffffffff) > + fatalx("retrans time (%lld) on %s out of range", > (long long)val64, intface); > - exit(1); > - } > + > tmp->retranstimer = (u_int32_t)val64; > > - if (agetnum("hapref") != -1 || agetnum("hatime") != -1) { > - log_warnx("mobile-ip6 configuration not supported"); > - exit(1); > - } > + if (agetnum("hapref") != -1 || agetnum("hatime") != -1) > + fatalx("mobile-ip6 configuration not supported"); > + > /* prefix information */ > > /* > @@ -251,16 +240,14 @@ getconfig(char *intface) > > pfx->origin = PREFIX_FROM_CONFIG; > > - if (inet_pton(AF_INET6, addr, &pfx->prefix) != 1) { > - log_warn("inet_pton failed for %s", addr); > - exit(1); > - } > - if (IN6_IS_ADDR_MULTICAST(&pfx->prefix)) { > - log_warnx("multicast prefix (%s) must" > + if (inet_pton(AF_INET6, addr, &pfx->prefix) != 1) > + fatal("inet_pton failed for %s", addr); > + > + if (IN6_IS_ADDR_MULTICAST(&pfx->prefix)) > + fatalx("multicast prefix (%s) must" > " not be advertised on %s", > addr, intface); > - exit(1); > - } > + > if (IN6_IS_ADDR_LINKLOCAL(&pfx->prefix)) > log_info("link-local prefix (%s) will be" > " advertised on %s", > @@ -268,12 +255,11 @@ getconfig(char *intface) > > makeentry(entbuf, sizeof(entbuf), i, "prefixlen"); > MAYHAVE(val, entbuf, 64); > - if (val < 0 || val > 128) { > - log_warnx("prefixlen (%ld) for %s " > + if (val < 0 || val > 128) > + fatalx("prefixlen (%ld) for %s " > "on %s out of range", > val, addr, intface); > - exit(1); > - } > + > pfx->prefixlen = (int)val; > > makeentry(entbuf, sizeof(entbuf), i, "pinfoflags"); > @@ -284,13 +270,12 @@ getconfig(char *intface) > > makeentry(entbuf, sizeof(entbuf), i, "vltime"); > MAYHAVE(val64, entbuf, DEF_ADVVALIDLIFETIME); > - if (val64 < 0 || val64 > 0xffffffff) { > - log_warnx("vltime (%lld) for" > + if (val64 < 0 || val64 > 0xffffffff) > + fatalx("vltime (%lld) for" > " %s/%d on %s is out of range", > (long long)val64, > addr, pfx->prefixlen, intface); > - exit(1); > - } > + > pfx->validlifetime = (u_int32_t)val64; > > makeentry(entbuf, sizeof(entbuf), i, "vltimedecr"); > @@ -303,13 +288,12 @@ getconfig(char *intface) > > makeentry(entbuf, sizeof(entbuf), i, "pltime"); > MAYHAVE(val64, entbuf, DEF_ADVPREFERREDLIFETIME); > - if (val64 < 0 || val64 > 0xffffffff) { > - log_warnx("pltime (%lld) for %s/%d on %s" > + if (val64 < 0 || val64 > 0xffffffff) > + fatalx("pltime (%lld) for %s/%d on %s" > " is out of range", > (long long)val64, > addr, pfx->prefixlen, intface); > - exit(1); > - } > + > pfx->preflifetime = (u_int32_t)val64; > > makeentry(entbuf, sizeof(entbuf), i, "pltimedecr"); > @@ -337,19 +321,16 @@ getconfig(char *intface) > if (rti == NULL) > fatal(NULL); > > - if (inet_pton(AF_INET6, addr, &rti->prefix) != 1) { > - log_warn("inet_pton failed for %s", addr); > - exit(1); > - } > + if (inet_pton(AF_INET6, addr, &rti->prefix) != 1) > + fatal("inet_pton failed for %s", addr); > > makeentry(entbuf, sizeof(entbuf), i, "rtplen"); > MAYHAVE(val, entbuf, 64); > - if (val < 0 || val > 128) { > - log_warnx("route prefixlen (%ld) for %s " > + if (val < 0 || val > 128) > + fatalx("route prefixlen (%ld) for %s " > "on %s out of range", > val, addr, intface); > - exit(1); > - } > + > rti->prefixlen = (int)val; > > makeentry(entbuf, sizeof(entbuf), i, "rtflags"); > @@ -358,35 +339,31 @@ getconfig(char *intface) > if (strchr(flagstr, 'h')) > val |= ND_RA_FLAG_RTPREF_HIGH; > if (strchr(flagstr, 'l')) { > - if (val & ND_RA_FLAG_RTPREF_HIGH) { > - log_warnx("the \'h\' and \'l\'" > + if (val & ND_RA_FLAG_RTPREF_HIGH) > + fatalx("the \'h\' and \'l\'" > " route preferences are" > " exclusive"); > - exit(1); > - } > + > val |= ND_RA_FLAG_RTPREF_LOW; > } > } else > MAYHAVE(val, entbuf, 0); > > rti->rtpref = val & ND_RA_FLAG_RTPREF_MASK; > - if (rti->rtpref == ND_RA_FLAG_RTPREF_RSV) { > - log_warnx("invalid route preference (%02x)" > + if (rti->rtpref == ND_RA_FLAG_RTPREF_RSV) > + fatalx("invalid route preference (%02x)" > " for %s/%d on %s", > rti->rtpref, addr, rti->prefixlen, intface); > - exit(1); > - } > > makeentry(entbuf, sizeof(entbuf), i, "rtltime"); > MAYHAVE(val64, entbuf, -1); > if (val64 == -1) > val64 = tmp->lifetime; > - if (val64 < 0 || val64 >= 0xffffffff) { > - log_warnx("route lifetime (%d) " > + if (val64 < 0 || val64 >= 0xffffffff) > + fatalx("route lifetime (%d) " > " for %s/%d on %s out of range", > rti->rtpref, addr, rti->prefixlen, intface); > - exit(1); > - } > + > rti->lifetime = (uint32_t)val64; > > TAILQ_INSERT_TAIL(&tmp->rtinfos, rti, entry); > @@ -429,10 +406,10 @@ getconfig(char *intface) > > val = 0; > while ((tmpaddr = strsep(&addr, ","))) { > - if (inet_pton(AF_INET6, tmpaddr, &rds->servers[val]) != > 1) { > - log_warn("inet_pton failed for %s", tmpaddr); > - exit(1); > - } > + if (inet_pton(AF_INET6, tmpaddr, &rds->servers[val]) != > + 1) > + fatal("inet_pton failed for %s", tmpaddr); > + > val++; > } > } > @@ -489,10 +466,9 @@ getconfig(char *intface) > } > > MAYHAVE(val, "mtu", 0); > - if (val < 0 || val > 0xffffffff) { > - log_warnx("mtu (%ld) on %s out of range", val, intface); > - exit(1); > - } > + if (val < 0 || val > 0xffffffff) > + fatalx("mtu (%ld) on %s out of range", val, intface); > + > tmp->linkmtu = (u_int32_t)val; > if (tmp->linkmtu == 0) { > char *mtustr; > @@ -500,13 +476,10 @@ getconfig(char *intface) > if ((mtustr = agetstr("mtu", &bp)) && > strcmp(mtustr, "auto") == 0) > tmp->linkmtu = tmp->phymtu; > - } > - else if (tmp->linkmtu < IPV6_MMTU || tmp->linkmtu > tmp->phymtu) { > - log_warnx("advertised link mtu (%u) on %s is invalid (must" > + } else if (tmp->linkmtu < IPV6_MMTU || tmp->linkmtu > tmp->phymtu) > + fatalx("advertised link mtu (%u) on %s is invalid (must" > " be between least MTU (%d) and physical link MTU (%d)", > tmp->linkmtu, intface, IPV6_MMTU, tmp->phymtu); > - exit(1); > - } > > /* route information */ > MAYHAVE(val, "routes", -1); > diff --git if.c if.c > index c4a4fea1984..95f83d8e822 100644 > --- if.c > +++ if.c > @@ -181,8 +181,7 @@ lladdropt_fill(struct sockaddr_dl *sdl, struct nd_opt_hdr > *ndopt) > memcpy(addr, LLADDR(sdl), ETHER_ADDR_LEN); > break; > default: > - log_warn("unsupported link type(%d)", sdl->sdl_type); > - exit(1); > + fatalx("unsupported link type(%d)", sdl->sdl_type); > } > } > > @@ -444,12 +443,11 @@ parse_iflist(struct if_msghdr ***ifmlist_p, char *buf, > size_t bufsize) > if (ifm->ifm_version == RTM_VERSION) > (*ifmlist_p)[ifm->ifm_index] = ifm; > } else { > - log_warn("out of sync parsing NET_RT_IFLIST," > + fatalx("out of sync parsing NET_RT_IFLIST," > " expected %d, got %d, msglen = %d," > " buf:%p, ifm:%p, lim:%p", > RTM_IFINFO, ifm->ifm_type, ifm->ifm_msglen, > buf, ifm, lim); > - exit(1); > }
does it still look readable without the { } ? > for (ifam = (struct ifa_msghdr *) > ((char *)ifm + ifm->ifm_msglen); > diff --git rtadvd.c rtadvd.c > index 71419bcf5b9..030e8c45509 100644 > --- rtadvd.c > +++ rtadvd.c > @@ -1152,10 +1152,8 @@ sock_open(void) > SLIST_FOREACH(ra, &ralist, entry) { > mreq.ipv6mr_interface = ra->ifindex; > if (setsockopt(sock, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq, > - sizeof(mreq)) < 0) { > - log_warn("IPV6_JOIN_GROUP(link) on %s", ra->ifname); > - exit(1); > - } > + sizeof(mreq)) < 0) > + fatal("IPV6_JOIN_GROUP(link) on %s", ra->ifname); > } > > /* initialize msghdr for receiving packets */ > > -- > I'm not entirely sure you are real. >