diff --git a/src/core/ipv4/dhcp.c b/src/core/ipv4/dhcp.c index 288b5585..ded63619 100644 --- a/src/core/ipv4/dhcp.c +++ b/src/core/ipv4/dhcp.c @@ -78,6 +78,7 @@ #include "lwip/dns.h" #include "lwip/etharp.h" #include "lwip/prot/dhcp.h" +#include "lwip/prot/iana.h" #include @@ -1908,7 +1909,7 @@ dhcp_create_msg(struct netif *netif, struct dhcp *dhcp, u8_t message_type, u16_t msg_out->op = DHCP_BOOTREQUEST; /* @todo: make link layer independent */ - msg_out->htype = DHCP_HTYPE_ETH; + msg_out->htype = IANA_HWTYPE_ETHERNET; msg_out->hlen = netif->hwaddr_len; msg_out->xid = lwip_htonl(dhcp->xid); /* we don't need the broadcast flag since we can receive unicast traffic diff --git a/src/core/ipv4/etharp.c b/src/core/ipv4/etharp.c index d4c9928e..4a2d9a32 100644 --- a/src/core/ipv4/etharp.c +++ b/src/core/ipv4/etharp.c @@ -52,6 +52,7 @@ #include "lwip/snmp.h" #include "lwip/dhcp.h" #include "lwip/autoip.h" +#include "lwip/prot/iana.h" #include "netif/ethernet.h" #include @@ -650,7 +651,7 @@ etharp_input(struct pbuf *p, struct netif *netif) hdr = (struct etharp_hdr *)p->payload; /* RFC 826 "Packet Reception": */ - if ((hdr->hwtype != PP_HTONS(HWTYPE_ETHERNET)) || + if ((hdr->hwtype != PP_HTONS(IANA_HWTYPE_ETHERNET)) || (hdr->hwlen != ETH_HWADDR_LEN) || (hdr->protolen != sizeof(ip4_addr_t)) || (hdr->proto != PP_HTONS(ETHTYPE_IP))) { @@ -1139,7 +1140,7 @@ etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr, IPADDR_WORDALIGNED_COPY_FROM_IP4_ADDR_T(&hdr->sipaddr, ipsrc_addr); IPADDR_WORDALIGNED_COPY_FROM_IP4_ADDR_T(&hdr->dipaddr, ipdst_addr); - hdr->hwtype = PP_HTONS(HWTYPE_ETHERNET); + hdr->hwtype = PP_HTONS(IANA_HWTYPE_ETHERNET); hdr->proto = PP_HTONS(ETHTYPE_IP); /* set hwlen and protolen */ hdr->hwlen = ETH_HWADDR_LEN; diff --git a/src/include/lwip/prot/dhcp.h b/src/include/lwip/prot/dhcp.h index 112953cb..2ac8907a 100644 --- a/src/include/lwip/prot/dhcp.h +++ b/src/include/lwip/prot/dhcp.h @@ -128,9 +128,6 @@ typedef enum { #define DHCP_RELEASE 7 #define DHCP_INFORM 8 -/** DHCP hardware type, currently only ethernet is supported */ -#define DHCP_HTYPE_ETH 1 - #define DHCP_MAGIC_COOKIE 0x63825363UL /* This is a list of options for BOOTP and DHCP, see RFC 2132 for descriptions */ diff --git a/src/include/lwip/prot/etharp.h b/src/include/lwip/prot/etharp.h index 11a0810a..811c2284 100644 --- a/src/include/lwip/prot/etharp.h +++ b/src/include/lwip/prot/etharp.h @@ -101,12 +101,6 @@ PACK_STRUCT_END #define SIZEOF_ETHARP_HDR 28 -/* ARP hwtype values */ -enum etharp_hwtype { - HWTYPE_ETHERNET = 1 - /* others not used */ -}; - /* ARP message types (opcodes) */ enum etharp_opcode { ARP_REQUEST = 1, diff --git a/src/include/lwip/prot/iana.h b/src/include/lwip/prot/iana.h new file mode 100644 index 00000000..c4274875 --- /dev/null +++ b/src/include/lwip/prot/iana.h @@ -0,0 +1,51 @@ +/** + * @file + * IANA assigned numbers + */ + +/* + * Copyright (c) 2017 Dirk Ziegelmeier. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Dirk Ziegelmeier + * + */ + +#ifndef LWIP_HDR_PROT_IANA_H +#define LWIP_HDR_PROT_IANA_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define IANA_HWTYPE_ETHERNET 1 + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_IANA_H */ diff --git a/test/unit/etharp/test_etharp.c b/test/unit/etharp/test_etharp.c index 67b02d0b..9b26edae 100644 --- a/test/unit/etharp/test_etharp.c +++ b/test/unit/etharp/test_etharp.c @@ -4,6 +4,7 @@ #include "lwip/etharp.h" #include "netif/ethernet.h" #include "lwip/stats.h" +#include "lwip/prot/iana.h" #if !LWIP_STATS || !UDP_STATS || !MEMP_STATS || !ETHARP_STATS #error "This tests needs UDP-, MEMP- and ETHARP-statistics enabled" @@ -89,7 +90,7 @@ create_arp_response(ip4_addr_t *adr) ethhdr->src = test_ethaddr2; ethhdr->type = htons(ETHTYPE_ARP); - etharphdr->hwtype = htons(/*HWTYPE_ETHERNET*/ 1); + etharphdr->hwtype = htons(IANA_HWTYPE_ETHERNET); etharphdr->proto = htons(ETHTYPE_IP); etharphdr->hwlen = ETHARP_HWADDR_LEN; etharphdr->protolen = sizeof(ip4_addr_t);