const unsigned char *taddr, struct in_addr tip)
{
struct arphdr *arp;
- size_t arpsize = arphdr_len2 (iface->hwlen, sizeof (struct in_addr));
+ size_t arpsize = arphdr_len2 (iface->hwlen, sizeof (sip));
caddr_t tha;
int retval;
arp->ar_hrd = htons (iface->family);
arp->ar_pro = htons (ETHERTYPE_IP);
arp->ar_hln = iface->hwlen;
- arp->ar_pln = sizeof (struct in_addr);
+ arp->ar_pln = sizeof (sip);
arp->ar_op = htons (op);
memcpy (ar_sha (arp), iface->hwaddr, (size_t) arp->ar_hln);
memcpy (ar_spa (arp), &sip, (size_t) arp->ar_pln);
if (! open_socket (iface, ETHERTYPE_ARP))
return (-1);
- memset (&null_address, 0, sizeof (struct in_addr));
+ memset (&null_address, 0, sizeof (null_address));
buffer = xmalloc (iface->buffer_length);
reply = xmalloc (iface->buffer_length);
/* Protocol must be IP. */
if (reply->ar_pro != htons (ETHERTYPE_IP))
continue;
- if (reply->ar_pln != sizeof (struct in_addr))
+ if (reply->ar_pln != sizeof (address))
continue;
if ((unsigned) bytes < sizeof (reply) +
2 * (4 + reply->ar_hln))
The benefit is that if we get >1 DHCP packet in our buffer and
the first one fails for any reason, we can use the next. */
- memset (&message, 0, sizeof (struct dhcpmessage_t));
+ memset (&message, 0, sizeof (message));
new_dhcp = xmalloc (sizeof (*new_dhcp));
do {
logger (LOG_DEBUG, "Looking up hostname via DNS");
addr = xmalloc (sizeof (char) * NI_MAXHOST);
- salen = sizeof (struct sockaddr);
+ salen = sizeof (su.sa);
memset (&su.sa, 0, salen);
su.sin.sin_family = AF_INET;
memcpy (&su.sin.sin_addr, &dhcp->address, sizeof (su.sin.sin_addr));
logger (LOG_DEBUG, "sending %s with xid 0x%x",
dhcp_message (type), xid);
retval = send_packet (iface, ETHERTYPE_IP, (unsigned char *) packet,
- message_length + sizeof (struct ip) +
- sizeof (struct udphdr));
+ message_length +
+ sizeof (packet->ip) + sizeof (packet->udp));
free (packet);
return (retval);
}
for (i = 0; i < length; i += 4) {
if (*address == NULL) {
- *address = xzalloc (sizeof (address_t));
- p = *address;
+ p = *address = xzalloc (sizeof (*p));
} else {
- p->next = xzalloc (sizeof (address_t));
+ p->next = xzalloc (sizeof (*p));
p = p->next;
}
bool retval = true;
while ((token = strsep (&p, " "))) {
- address_t *a = xzalloc (sizeof (address_t));
+ address_t *a = xzalloc (sizeof (*a));
if (inet_aton (token, &a->address) == 0) {
logger (LOG_ERR, "%s: invalid address `%s'", var, token);
ifr = ifreqs.ifr;
#ifdef __linux__
- p += sizeof (struct ifreq);
+ p += sizeof (*ifr);
#else
p += sizeof (ifr->ifr_name) +
MAX (ifr->ifr_addr.sa_len, sizeof (struct sockaddr));
int change, int del)
{
int s;
- struct rtm
- {
- struct rt_msghdr hdr;
- char buffer[sizeof (struct sockaddr_storage) * 3];
- } rtm;
- char *bp = rtm.buffer;
static int seq;
union sockunion {
struct sockaddr sa;
struct sockaddr_dl sdl;
struct sockaddr_storage ss;
} su;
-
+ struct rtm
+ {
+ struct rt_msghdr hdr;
+ char buffer[sizeof (su) * 3];
+ } rtm;
+ char *bp = rtm.buffer;
size_t l;
if (! ifname)
rtm.hdr.rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK;
#define ADDADDR(_addr) \
- memset (&su, 0, sizeof (struct sockaddr_storage)); \
+ memset (&su, 0, sizeof (su)); \
su.sin.sin_family = AF_INET; \
- su.sin.sin_len = sizeof (struct sockaddr_in); \
- memcpy (&su.sin.sin_addr, &_addr, sizeof (struct in_addr)); \
+ su.sin.sin_len = sizeof (su.sin.sin_addr); \
+ memcpy (&su.sin.sin_addr, &_addr, sizeof (su.sin.sin_addr)); \
l = SA_SIZE (&(su.sa)); \
memcpy (bp, &(su), l); \
bp += l;
hwaddr = xmalloc (sizeof (unsigned char) * HWADDR_LEN);
_do_interface (ifname, hwaddr, &hwlen, NULL, false, false);
- memset (&su, 0, sizeof (struct sockaddr_storage));
- su.sdl.sdl_len = sizeof (struct sockaddr_dl);
+ memset (&su, 0, sizeof (su));
+ su.sdl.sdl_len = sizeof (su.sdl);
su.sdl.sdl_family = AF_LINK;
su.sdl.sdl_nlen = strlen (ifname);
memcpy (&su.sdl.sdl_data, ifname, (size_t) su.sdl.sdl_nlen);
goto eexit;
}
- if ((unsigned) l < sizeof (struct nlmsgerr)) {
+ if ((unsigned) l < sizeof (*err)) {
logger (LOG_ERR, "netlink: error truncated");
goto eexit;
}
} pay;
pay.buffer = payload;
len = ntohs (pay.packet->ip.ip_len) -
- sizeof (struct ip) -
- sizeof (struct udphdr);
+ sizeof (pay.packet->ip) -
+ sizeof (pay.packet->udp);
memcpy (data, &pay.packet->dhcp, len);
have_data = true;
}
return (bytes);
}
- if ((unsigned) bytes < (sizeof (struct ip) + sizeof (struct udphdr))) {
+ if ((unsigned) bytes < (sizeof (pay.packet->ip) +
+ sizeof (pay.packet->udp)))
+ {
logger (LOG_DEBUG, "message too short, ignoring");
return (-1);
}