On Mon, Dec 13, 2021 at 11:25:02AM +0100, Florian Obser wrote:
> Replace struct member assignment with struct assignment to make the code
> more compact. No binary change (on amd64).
> 
> OK? Or is there a reason not to do this?

Looks good to me and I also see no reason why this should not be done.
 
> diff --git dhcpleased.c dhcpleased.c
> index c8cc8e14d04..00bbffc1699 100644
> --- dhcpleased.c
> +++ dhcpleased.c
> @@ -785,16 +785,14 @@ configure_interface(struct imsg_configure_interface 
> *imsg)
>               if (ifa->ifa_addr->sa_family != AF_INET)
>                       continue;
>  
> -             addr.s_addr = ((struct sockaddr_in *)ifa->ifa_addr)
> -                 ->sin_addr.s_addr;
> -             mask.s_addr = ((struct sockaddr_in *)ifa->ifa_netmask)
> -                 ->sin_addr.s_addr;
> +             addr = ((struct sockaddr_in *)ifa->ifa_addr)->sin_addr;
> +             mask = ((struct sockaddr_in *)ifa->ifa_netmask)->sin_addr;
>  
>               if (imsg->addr.s_addr == addr.s_addr) {
>                       if (imsg->mask.s_addr == mask.s_addr)
>                               found = 1;
>                       else {
> -                             req_sin_addr->sin_addr.s_addr = addr.s_addr;
> +                             req_sin_addr->sin_addr = addr;
>                               if (ioctl(ioctl_sock, SIOCDIFADDR, &ifaliasreq)
>                                   == -1) {
>                                       if (errno != EADDRNOTAVAIL)
> @@ -805,12 +803,12 @@ configure_interface(struct imsg_configure_interface 
> *imsg)
>               }
>       }
>  
> -     req_sin_addr->sin_addr.s_addr = imsg->addr.s_addr;
> +     req_sin_addr->sin_addr = imsg->addr;
>       if (!found) {
>               req_sin_mask = (struct sockaddr_in *)&ifaliasreq.ifra_mask;
>               req_sin_mask->sin_family = AF_INET;
>               req_sin_mask->sin_len = sizeof(*req_sin_mask);
> -             req_sin_mask->sin_addr.s_addr = imsg->mask.s_addr;
> +             req_sin_mask->sin_addr = imsg->mask;
>               if (ioctl(ioctl_sock, SIOCAIFADDR, &ifaliasreq) == -1)
>                       log_warn("SIOCAIFADDR");
>       }
> @@ -931,7 +929,7 @@ deconfigure_interface(struct imsg_configure_interface 
> *imsg)
>       req_sin_addr->sin_family = AF_INET;
>       req_sin_addr->sin_len = sizeof(*req_sin_addr);
>  
> -     req_sin_addr->sin_addr.s_addr = imsg->addr.s_addr;
> +     req_sin_addr->sin_addr = imsg->addr;
>       if (ioctl(ioctl_sock, SIOCDIFADDR, &ifaliasreq) == -1) {
>               if (errno != EADDRNOTAVAIL)
>                       log_warn("SIOCDIFADDR");
> @@ -948,7 +946,7 @@ configure_routes(uint8_t rtm_type, struct 
> imsg_configure_interface *imsg)
>       memset(&ifa, 0, sizeof(ifa));
>       ifa.sin_family = AF_INET;
>       ifa.sin_len = sizeof(ifa);
> -     ifa.sin_addr.s_addr = imsg->addr.s_addr;
> +     ifa.sin_addr = imsg->addr;
>  
>       memset(&dst, 0, sizeof(dst));
>       dst.sin_family = AF_INET;
> @@ -965,9 +963,9 @@ configure_routes(uint8_t rtm_type, struct 
> imsg_configure_interface *imsg)
>       addrnet = imsg->addr.s_addr & imsg->mask.s_addr;
>  
>       for (i = 0; i < imsg->routes_len; i++) {
> -             dst.sin_addr.s_addr = imsg->routes[i].dst.s_addr;
> -             mask.sin_addr.s_addr = imsg->routes[i].mask.s_addr;
> -             gw.sin_addr.s_addr = imsg->routes[i].gw.s_addr;
> +             dst.sin_addr = imsg->routes[i].dst;
> +             mask.sin_addr = imsg->routes[i].mask;
> +             gw.sin_addr = imsg->routes[i].gw;
>  
>               if (gw.sin_addr.s_addr == INADDR_ANY) {
>                       /* direct route */
> @@ -988,8 +986,7 @@ configure_routes(uint8_t rtm_type, struct 
> imsg_configure_interface *imsg)
>                               configure_route(rtm_type, imsg->if_index,
>                                   imsg->rdomain, &gw, &mask, &ifa, NULL,
>                                   RTF_CLONING);
> -                             mask.sin_addr.s_addr =
> -                                 imsg->routes[i].mask.s_addr;
> +                             mask.sin_addr = imsg->routes[i].mask;
>                       }
>  
>                       if (gw.sin_addr.s_addr == ifa.sin_addr.s_addr) {
> diff --git engine.c engine.c
> index 09867c595b4..60f81d6f3c8 100644
> --- engine.c
> +++ engine.c
> @@ -570,10 +570,10 @@ send_interface_info(struct dhcpleased_iface *iface, 
> pid_t pid)
>       strlcpy(cei.state, if_state_name[iface->state], sizeof(cei.state));
>       memcpy(&cei.request_time, &iface->request_time,
>           sizeof(cei.request_time));
> -     cei.server_identifier.s_addr = iface->server_identifier.s_addr;
> -     cei.dhcp_server.s_addr = iface->dhcp_server.s_addr;
> -     cei.requested_ip.s_addr = iface->requested_ip.s_addr;
> -     cei.mask.s_addr = iface->mask.s_addr;
> +     cei.server_identifier = iface->server_identifier;
> +     cei.dhcp_server = iface->dhcp_server;
> +     cei.requested_ip = iface->requested_ip;
> +     cei.mask = iface->mask;
>       cei.routes_len = iface->routes_len;
>       memcpy(cei.routes, iface->routes, sizeof(cei.routes));
>       memcpy(cei.nameservers, iface->nameservers, sizeof(cei.nameservers));
> @@ -1169,9 +1169,9 @@ parse_dhcp(struct dhcpleased_iface *iface, struct 
> imsg_dhcp *dhcp)
>                           "offered IP address", __func__);
>                       return;
>               }
> -             iface->server_identifier.s_addr = server_identifier.s_addr;
> -             iface->dhcp_server.s_addr = server_identifier.s_addr;
> -             iface->requested_ip.s_addr = dhcp_hdr->yiaddr.s_addr;
> +             iface->server_identifier = server_identifier;
> +             iface->dhcp_server = server_identifier;
> +             iface->requested_ip = dhcp_hdr->yiaddr;
>               state_transition(iface, IF_REQUESTING);
>               break;
>       case DHCPACK:
> @@ -1228,10 +1228,10 @@ parse_dhcp(struct dhcpleased_iface *iface, struct 
> imsg_dhcp *dhcp)
>                       rebinding_time = lease_time - (lease_time / 8);
>  
>               clock_gettime(CLOCK_MONOTONIC, &iface->request_time);
> -             iface->server_identifier.s_addr = server_identifier.s_addr;
> -             iface->dhcp_server.s_addr = server_identifier.s_addr;
> -             iface->requested_ip.s_addr = dhcp_hdr->yiaddr.s_addr;
> -             iface->mask.s_addr = subnet_mask.s_addr;
> +             iface->server_identifier = server_identifier;
> +             iface->dhcp_server = server_identifier;
> +             iface->requested_ip = dhcp_hdr->yiaddr;
> +             iface->mask = subnet_mask;
>  #ifndef SMALL
>               if (iface_conf != NULL && iface_conf->ignore & IGN_ROUTES) {
>                       iface->routes_len = 0;
> @@ -1260,7 +1260,7 @@ parse_dhcp(struct dhcpleased_iface *iface, struct 
> imsg_dhcp *dhcp)
>                           sizeof(iface->nameservers));
>               }
>  
> -             iface->siaddr.s_addr = dhcp_hdr->siaddr.s_addr;
> +             iface->siaddr = dhcp_hdr->siaddr;
>  
>               /* we made sure this is a string futher up */
>               strnvis(iface->file, dhcp_hdr->file, sizeof(iface->file),
> @@ -1582,9 +1582,9 @@ send_configure_interface(struct dhcpleased_iface *iface)
>       memset(&imsg, 0, sizeof(imsg));
>       imsg.if_index = iface->if_index;
>       imsg.rdomain = iface->rdomain;
> -     imsg.addr.s_addr = iface->requested_ip.s_addr;
> -     imsg.mask.s_addr = iface->mask.s_addr;
> -     imsg.siaddr.s_addr = iface->siaddr.s_addr;
> +     imsg.addr = iface->requested_ip;
> +     imsg.mask = iface->mask;
> +     imsg.siaddr = iface->siaddr;
>       strlcpy(imsg.file, iface->file, sizeof(imsg.file));
>       strlcpy(imsg.domainname, iface->domainname, sizeof(imsg.domainname));
>       strlcpy(imsg.hostname, iface->hostname, sizeof(imsg.hostname));
> @@ -1621,9 +1621,9 @@ send_deconfigure_interface(struct dhcpleased_iface 
> *iface)
>  
>       imsg.if_index = iface->if_index;
>       imsg.rdomain = iface->rdomain;
> -     imsg.addr.s_addr = iface->requested_ip.s_addr;
> -     imsg.mask.s_addr = iface->mask.s_addr;
> -     imsg.siaddr.s_addr = iface->siaddr.s_addr;
> +     imsg.addr = iface->requested_ip;
> +     imsg.mask = iface->mask;
> +     imsg.siaddr = iface->siaddr;
>       strlcpy(imsg.file, iface->file, sizeof(imsg.file));
>       strlcpy(imsg.domainname, iface->domainname, sizeof(imsg.domainname));
>       strlcpy(imsg.hostname, iface->hostname, sizeof(imsg.hostname));
> @@ -1650,9 +1650,9 @@ send_routes_withdraw(struct dhcpleased_iface *iface)
>  
>       imsg.if_index = iface->if_index;
>       imsg.rdomain = iface->rdomain;
> -     imsg.addr.s_addr = iface->requested_ip.s_addr;
> -     imsg.mask.s_addr = iface->mask.s_addr;
> -     imsg.siaddr.s_addr = iface->siaddr.s_addr;
> +     imsg.addr = iface->requested_ip;
> +     imsg.mask = iface->mask;
> +     imsg.siaddr = iface->siaddr;
>       strlcpy(imsg.file, iface->file, sizeof(imsg.file));
>       strlcpy(imsg.domainname, iface->domainname, sizeof(imsg.domainname));
>       strlcpy(imsg.hostname, iface->hostname, sizeof(imsg.hostname));
> diff --git frontend.c frontend.c
> index 57e60c57ee2..53b61cafb77 100644
> --- frontend.c
> +++ frontend.c
> @@ -890,10 +890,10 @@ void
>  iface_data_from_imsg(struct iface* iface, struct imsg_req_dhcp *imsg)
>  {
>       iface->xid = imsg->xid;
> -     iface->ciaddr.s_addr = imsg->ciaddr.s_addr;
> -     iface->requested_ip.s_addr = imsg->requested_ip.s_addr;
> -     iface->server_identifier.s_addr = imsg->server_identifier.s_addr;
> -     iface->dhcp_server.s_addr = imsg->dhcp_server.s_addr;
> +     iface->ciaddr = imsg->ciaddr;
> +     iface->requested_ip = imsg->requested_ip;
> +     iface->server_identifier = imsg->server_identifier;
> +     iface->dhcp_server = imsg->dhcp_server;
>  }
>  
>  ssize_t
> @@ -937,7 +937,7 @@ build_packet(uint8_t message_type, char *if_name, 
> uint32_t xid,
>       hdr->hops = 0;
>       hdr->xid = xid;
>       hdr->secs = 0;
> -     hdr->ciaddr.s_addr = ciaddr->s_addr;
> +     hdr->ciaddr = *ciaddr;
>       memcpy(hdr->chaddr, hw_address, sizeof(*hw_address));
>       p += sizeof(struct dhcp_hdr);
>       memcpy(p, dhcp_cookie, sizeof(dhcp_cookie));
> @@ -1043,7 +1043,7 @@ udp_send_packet(struct iface *iface, uint8_t *packet, 
> ssize_t len)
>       memset(&to, 0, sizeof(to));
>       to.sin_family = AF_INET;
>       to.sin_len = sizeof(to);
> -     to.sin_addr.s_addr = iface->dhcp_server.s_addr;
> +     to.sin_addr = iface->dhcp_server;
>       to.sin_port = ntohs(SERVER_PORT);
>  
>       if (sendto(iface->udpsock, packet, len, 0, (struct sockaddr *)&to,
> @@ -1080,7 +1080,7 @@ bpf_send_packet(struct iface *iface, uint8_t *packet, 
> ssize_t len)
>       ip.ip_ttl = 128;
>       ip.ip_p = IPPROTO_UDP;
>       ip.ip_sum = 0;
> -     ip.ip_src.s_addr = 0;
> +     ip.ip_src.s_addr = INADDR_ANY;
>       ip.ip_dst.s_addr = INADDR_BROADCAST;
>       ip.ip_sum = wrapsum(checksum((unsigned char *)&ip, sizeof(ip), 0));
>       iov[iovcnt].iov_base = &ip;
> 
> -- 
> I'm not entirely sure you are real.
> 

-- 
:wq Claudio

Reply via email to