delete_addresses(), interface_status(), addressinuse(),
authorkrw <krw@openbsd.org>
Thu, 29 Jun 2017 13:55:53 +0000 (13:55 +0000)
committerkrw <krw@openbsd.org>
Thu, 29 Jun 2017 13:55:53 +0000 (13:55 +0000)
lease_as_string() and rewrite_option_db() only use the
interface name, so supply just the name.

Tweak interface_link_forceup() to use the same param
name as other functions taking the interface name.

sbin/dhclient/dhclient.c
sbin/dhclient/dhcpd.h
sbin/dhclient/dispatch.c
sbin/dhclient/kroute.c

index 3934ee8..10d1710 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: dhclient.c,v 1.452 2017/06/28 16:31:52 krw Exp $      */
+/*     $OpenBSD: dhclient.c,v 1.453 2017/06/29 13:55:53 krw Exp $      */
 
 /*
  * Copyright 2004 Henning Brauer <henning@openbsd.org>
@@ -118,7 +118,7 @@ struct sockaddr     *get_ifa(char *, int);
 void            usage(void);
 int             res_hnok(const char *dn);
 int             res_hnok_list(const char *dn);
-int             addressinuse(struct interface_info *, struct in_addr, char *);
+int             addressinuse(char *, struct in_addr, char *);
 
 void            fork_privchld(struct interface_info *, int, int);
 void            get_ifname(struct interface_info *, char *);
@@ -148,9 +148,8 @@ void make_request(struct interface_info *, struct client_lease *);
 void make_decline(struct interface_info *, struct client_lease *);
 
 void rewrite_client_leases(struct interface_info *);
-void rewrite_option_db(struct interface_info *, struct client_lease *,
-    struct client_lease *);
-char *lease_as_string(struct interface_info *, char *, struct client_lease *);
+void rewrite_option_db(char *, struct client_lease *, struct client_lease *);
+char *lease_as_string(char *, char *, struct client_lease *);
 void append_statement(char *, size_t, char *, char *);
 
 struct client_lease *packet_to_lease(struct interface_info *,
@@ -375,7 +374,7 @@ routehandler(struct interface_info *ifi)
                        }
                }
 
-               linkstat = interface_status(ifi);
+               linkstat = interface_status(ifi->name);
                if (linkstat != ifi->linkstat) {
 #ifdef DEBUG
                        log_debug("link state %s -> %s",
@@ -603,7 +602,7 @@ main(int argc, char *argv[])
         * the routing socket is listening, the RTM_IFINFO message with the
         * RTF_UP flag reset will cause premature exit.
         */
-       ifi->linkstat = interface_status(ifi);
+       ifi->linkstat = interface_status(ifi->name);
        if (ifi->linkstat == 0)
                interface_link_forceup(ifi->name);
 
@@ -702,7 +701,7 @@ state_preboot(struct interface_info *ifi)
 
        interval = cur_time - ifi->startup_time;
 
-       ifi->linkstat = interface_status(ifi);
+       ifi->linkstat = interface_status(ifi->name);
 
        if (log_perror && interval > 3) {
                if (!preamble && !ifi->linkstat) {
@@ -1014,7 +1013,7 @@ bind_lease(struct interface_info *ifi)
        ifi->offer = NULL;
 
        /* Deleting the addresses also clears out arp entries. */
-       delete_addresses(ifi);
+       delete_addresses(ifi->name);
        flush_routes();
 
        opt = &options[DHO_INTERFACE_MTU];
@@ -1072,7 +1071,7 @@ bind_lease(struct interface_info *ifi)
        }
 
 newlease:
-       rewrite_option_db(ifi, ifi->active, lease);
+       rewrite_option_db(ifi->name, ifi->active, lease);
        free_client_lease(lease);
 
        /*
@@ -1141,7 +1140,7 @@ state_bound(struct interface_info *ifi)
 }
 
 int
-addressinuse(struct interface_info *ifi, struct in_addr address, char *ifname)
+addressinuse(char *name, struct in_addr address, char *ifname)
 {
        struct ifaddrs *ifap, *ifa;
        struct sockaddr_in *sin;
@@ -1161,7 +1160,7 @@ addressinuse(struct interface_info *ifi, struct in_addr address, char *ifname)
                if (memcmp(&address, &sin->sin_addr, sizeof(address)) == 0) {
                        strlcpy(ifname, ifa->ifa_name, IF_NAMESIZE);
                        used = 1;
-                       if (strncmp(ifname, ifi->name, IF_NAMESIZE) != 0)
+                       if (strncmp(ifname, name, IF_NAMESIZE) != 0)
                                break;
                }
        }
@@ -1261,7 +1260,7 @@ packet_to_lease(struct interface_info *ifi, struct option_data *options)
         */
        lease->address.s_addr = packet->yiaddr.s_addr;
        memset(ifname, 0, sizeof(ifname));
-       if (addressinuse(ifi, lease->address, ifname) &&
+       if (addressinuse(ifi->name, lease->address, ifname) &&
            strncmp(ifname, ifi->name, IF_NAMESIZE) != 0) {
                log_warnx("lease declined: %s already configured on %s",
                    inet_ntoa(lease->address), ifname);
@@ -1761,7 +1760,7 @@ rewrite_client_leases(struct interface_info *ifi)
                        continue;
                if (lp->expiry <= cur_time)
                        continue;
-               leasestr = lease_as_string(ifi, "lease", lp);
+               leasestr = lease_as_string(ifi->name, "lease", lp);
                if (leasestr)
                        fprintf(leaseFile, "%s", leasestr);
                else
@@ -1774,7 +1773,7 @@ rewrite_client_leases(struct interface_info *ifi)
 }
 
 void
-rewrite_option_db(struct interface_info *ifi, struct client_lease *offered,
+rewrite_option_db(char *name, struct client_lease *offered,
     struct client_lease *effective)
 {
        char *leasestr;
@@ -1784,13 +1783,13 @@ rewrite_option_db(struct interface_info *ifi, struct client_lease *offered,
 
        rewind(optionDB);
 
-       leasestr = lease_as_string(ifi, "offered", offered);
+       leasestr = lease_as_string(name, "offered", offered);
        if (leasestr)
                fprintf(optionDB, "%s", leasestr);
        else
                log_warnx("cannot make offered lease into string");
 
-       leasestr = lease_as_string(ifi, "effective", effective);
+       leasestr = lease_as_string(name, "effective", effective);
        if (leasestr)
                fprintf(optionDB, "%s", leasestr);
        else
@@ -1810,8 +1809,7 @@ append_statement(char *string, size_t sz, char *s1, char *s2)
 }
 
 char *
-lease_as_string(struct interface_info *ifi, char *type,
-    struct client_lease *lease)
+lease_as_string(char *name, char *type, struct client_lease *lease)
 {
        static char string[8192];
        char timebuf[27];       /* to hold "6 2017/04/08 05:47:50 UTC;" */
@@ -1826,7 +1824,7 @@ lease_as_string(struct interface_info *ifi, char *type,
        strlcat(string, " {\n", sizeof(string));
        strlcat(string, BOOTP_LEASE(lease) ? "  bootp;\n" : "", sizeof(string));
 
-       buf = pretty_print_string(ifi->name, strlen(ifi->name), 1);
+       buf = pretty_print_string(name, strlen(name), 1);
        if (buf == NULL)
                return (NULL);
        append_statement(string, sizeof(string), "  interface ", buf);
@@ -2542,7 +2540,7 @@ get_recorded_lease(struct interface_info *ifi)
                    memcmp(lp->options[i].data, config->send_options[i].data,
                    lp->options[i].len)))
                        continue;
-               if (addressinuse(ifi, lp->address, ifname) &&
+               if (addressinuse(ifi->name, lp->address, ifname) &&
                    strncmp(ifname, ifi->name, IF_NAMESIZE) != 0)
                        continue;
                if (lp->is_static == 0 && lp->expiry <= cur_time)
index c242a6f..64744fc 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: dhcpd.h,v 1.198 2017/06/28 15:23:19 krw Exp $ */
+/*     $OpenBSD: dhcpd.h,v 1.199 2017/06/29 13:55:53 krw Exp $ */
 
 /*
  * Copyright (c) 2004 Henning Brauer <henning@openbsd.org>
@@ -208,7 +208,7 @@ void set_timeout( struct interface_info *, time_t,
     void (*)(struct interface_info *));
 void cancel_timeout(struct interface_info *);
 void interface_link_forceup(char *);
-int interface_status(struct interface_info *);
+int interface_status(char *);
 void get_hw_address(struct interface_info *);
 void sendhup(void);
 
@@ -241,7 +241,7 @@ void read_client_conf(struct interface_info *);
 void read_client_leases(struct interface_info *);
 
 /* kroute.c */
-void delete_addresses(struct interface_info *);
+void delete_addresses(char *);
 void delete_address(struct in_addr);
 
 void set_interface_mtu(int);
index e387663..384bc63 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: dispatch.c,v 1.128 2017/06/27 13:24:49 krw Exp $      */
+/*     $OpenBSD: dispatch.c,v 1.129 2017/06/29 13:55:53 krw Exp $      */
 
 /*
  * Copyright 2004 Henning Brauer <henning@openbsd.org>
@@ -223,13 +223,13 @@ packethandler(struct interface_info *ifi)
 }
 
 void
-interface_link_forceup(char *ifname)
+interface_link_forceup(char *name)
 {
        struct ifreq ifr;
        extern int sock;
 
        memset(&ifr, 0, sizeof(ifr));
-       strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+       strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
        if (ioctl(sock, SIOCGIFFLAGS, (caddr_t)&ifr) == -1) {
                log_warn("SIOCGIFFLAGS");
                return;
@@ -246,7 +246,7 @@ interface_link_forceup(char *ifname)
 }
 
 int
-interface_status(struct interface_info *ifi)
+interface_status(char *name)
 {
        struct ifaddrs *ifap, *ifa;
        struct if_data *ifdata;
@@ -259,7 +259,7 @@ interface_status(struct interface_info *ifi)
                    (ifa->ifa_flags & IFF_POINTOPOINT))
                        continue;
 
-               if (strcmp(ifi->name, ifa->ifa_name) != 0)
+               if (strcmp(name, ifa->ifa_name) != 0)
                        continue;
 
                if (ifa->ifa_addr->sa_family != AF_LINK)
index 37a7de4..38c6539 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: kroute.c,v 1.99 2017/06/28 16:31:52 krw Exp $ */
+/*     $OpenBSD: kroute.c,v 1.100 2017/06/29 13:55:53 krw Exp $        */
 
 /*
  * Copyright 2012 Kenneth R Westerback <krw@openbsd.org>
@@ -548,7 +548,7 @@ priv_add_route(int rdomain, struct imsg_add_route *imsg)
  * interface.
  */
 void
-delete_addresses(struct interface_info *ifi)
+delete_addresses(char *name)
 {
        struct in_addr addr;
        struct ifaddrs *ifap, *ifa;
@@ -561,7 +561,7 @@ delete_addresses(struct interface_info *ifi)
                    (ifa->ifa_flags & IFF_POINTOPOINT) ||
                    (!(ifa->ifa_flags & IFF_UP)) ||
                    (ifa->ifa_addr->sa_family != AF_INET) ||
-                   (strcmp(ifi->name, ifa->ifa_name) != 0))
+                   (strcmp(name, ifa->ifa_name) != 0))
                        continue;
 
                memcpy(&addr, &((struct sockaddr_in *)ifa->ifa_addr)->sin_addr,