Mercurial > hg > dhcpcd
changeset 3052:b55c354d0748 draft
Fix casting with htons()
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Sat, 28 Mar 2015 09:44:22 +0000 |
| parents | 90ffbe9c2cfd |
| children | 698875ddf8f3 |
| files | arp.c if-bsd.c if.h |
| diffstat | 3 files changed, 9 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/arp.c Fri Mar 27 11:17:28 2015 +0000 +++ b/arp.c Sat Mar 28 09:44:22 2015 +0000 @@ -54,7 +54,7 @@ (sizeof(struct arphdr) + (2 * sizeof(uint32_t)) + (2 * HWADDR_LEN)) static ssize_t -arp_send(const struct interface *ifp, int op, in_addr_t sip, in_addr_t tip) +arp_request(const struct interface *ifp, in_addr_t sip, in_addr_t tip) { uint8_t arp_buffer[ARP_LEN]; struct arphdr ar; @@ -65,7 +65,7 @@ ar.ar_pro = htons(ETHERTYPE_IP); ar.ar_hln = ifp->hwlen; ar.ar_pln = sizeof(sip); - ar.ar_op = htons(op); + ar.ar_op = htons(ARPOP_REQUEST); p = arp_buffer; len = 0; @@ -223,8 +223,7 @@ "%s: ARP announcing %s (%d of %d)", ifp->name, inet_ntoa(astate->addr), astate->claims, ANNOUNCE_NUM); - if (arp_send(ifp, ARPOP_REQUEST, - astate->addr.s_addr, astate->addr.s_addr) == -1) + if (arp_request(ifp, astate->addr.s_addr, astate->addr.s_addr) == -1) logger(ifp->ctx, LOG_ERR, "send_arp: %m"); eloop_timeout_add_sec(ifp->ctx->eloop, ANNOUNCE_WAIT, astate->claims < ANNOUNCE_NUM ? arp_announce1 : arp_announced, @@ -271,7 +270,7 @@ ifp->name, inet_ntoa(astate->addr), astate->probes ? astate->probes : PROBE_NUM, PROBE_NUM, timespec_to_double(&tv)); - if (arp_send(ifp, ARPOP_REQUEST, 0, astate->addr.s_addr) == -1) + if (arp_request(ifp, 0, astate->addr.s_addr) == -1) logger(ifp->ctx, LOG_ERR, "send_arp: %m"); }
--- a/if-bsd.c Fri Mar 27 11:17:28 2015 +0000 +++ b/if-bsd.c Sat Mar 28 09:44:22 2015 +0000 @@ -375,7 +375,7 @@ } ssize_t -if_sendrawpacket(const struct interface *ifp, int protocol, +if_sendrawpacket(const struct interface *ifp, uint16_t protocol, const void *data, size_t len) { struct iovec iov[2]; @@ -401,7 +401,7 @@ /* BPF requires that we read the entire buffer. * So we pass the buffer in the API so we can loop on >1 packet. */ ssize_t -if_readrawpacket(struct interface *ifp, int protocol, +if_readrawpacket(struct interface *ifp, uint16_t protocol, void *data, size_t len, int *flags) { int fd; @@ -725,7 +725,7 @@ /* KAME based systems want to store the scope inside the sin6_addr * for link local addreses */ if (IN6_IS_ADDR_LINKLOCAL(&sin->sin6_addr)) { - uint16_t scope = htons(ifindex); + uint16_t scope = htons((uint16_t)ifindex); memcpy(&sin->sin6_addr.s6_addr[2], &scope, sizeof(scope)); }
--- a/if.h Fri Mar 27 11:17:28 2015 +0000 +++ b/if.h Sat Mar 28 09:44:22 2015 +0000 @@ -114,8 +114,8 @@ extern const char *if_pfname; int if_openrawsocket(struct interface *, int); ssize_t if_sendrawpacket(const struct interface *, - int, const void *, size_t); -ssize_t if_readrawpacket(struct interface *, int, void *, size_t, int *); + uint16_t, const void *, size_t); +ssize_t if_readrawpacket(struct interface *, uint16_t, void *, size_t, int *); int if_address(const struct interface *, const struct in_addr *, const struct in_addr *,
