From 82f852abf3f756af44d9f8d7e82d200b9f6055aa Mon Sep 17 00:00:00 2001 From: likewise Date: Fri, 12 Mar 2004 00:10:07 +0000 Subject: [PATCH] Fix cyclic dependencies by careful re-ordering of #includes. This is really nasty. Can we forward-declare pointers to structs? --- src/core/dhcp.c | 2 +- src/core/ipv4/ip_addr.c | 12 ++++----- src/core/netif.c | 3 +-- src/core/raw.c | 2 +- src/core/tcp_in.c | 1 + src/core/tcp_out.c | 3 +-- src/core/udp.c | 2 +- src/include/ipv4/lwip/icmp.h | 1 + src/include/ipv4/lwip/ip_addr.h | 45 ++++++++++++++++++--------------- src/include/lwip/netif.h | 4 ++- 10 files changed, 40 insertions(+), 35 deletions(-) diff --git a/src/core/dhcp.c b/src/core/dhcp.c index 21402ac7..3228a202 100644 --- a/src/core/dhcp.c +++ b/src/core/dhcp.c @@ -72,9 +72,9 @@ #include "lwip/stats.h" #include "lwip/mem.h" #include "lwip/udp.h" +#include "lwip/ip_addr.h" #include "lwip/netif.h" #include "lwip/inet.h" -#include "lwip/ip_addr.h" #include "netif/etharp.h" #include "lwip/sys.h" diff --git a/src/core/ipv4/ip_addr.c b/src/core/ipv4/ip_addr.c index e2c674d4..aa93a9af 100644 --- a/src/core/ipv4/ip_addr.c +++ b/src/core/ipv4/ip_addr.c @@ -41,14 +41,14 @@ const struct ip_addr ip_addr_broadcast = { 0xffffffffUL }; * as it does not support non-broadcast interfaces. * lwip-devel 18-2-2004 */ -#if 0 /* going to replace macro in ip_addr.h */ +#if 1 /* going to replace macro in ip_addr.h */ #include "lwip/netif.h" -u8_t ip_addr_isbroadcast(struct ip_addr *addr, netif) +u8_t ip_addr_isbroadcast(struct ip_addr *addr, struct netif *netif) { /* all ones (broadcast) or all zeroes (old skool broadcast) */ - if (addr->addr == ip_addr_broadcast.ip_addr) || - addr->addr == ip_addr_any.ip_addr)) + if ((addr->addr == ip_addr_broadcast.addr) || + (addr->addr == ip_addr_any.addr)) return 1; /* no broadcast support on this network interface * we cannot proceed matching against broadcast addresses */ @@ -58,8 +58,8 @@ u8_t ip_addr_isbroadcast(struct ip_addr *addr, netif) else if (addr->addr == netif->ip_addr.addr) return 0; /* host identifier bits are all ones? => network broadcast address */ - else if (addr->addr & ~netif->netmask.addr == - ip_addr_broadcast.ip_addr & ~netif->netmask.addr) + else if ((addr->addr & ~netif->netmask.addr) == + (ip_addr_broadcast.addr & ~netif->netmask.addr)) return 1; else return 0; diff --git a/src/core/netif.c b/src/core/netif.c index 5e7dd8ff..91d0afa2 100644 --- a/src/core/netif.c +++ b/src/core/netif.c @@ -39,11 +39,10 @@ #include "lwip/opt.h" #include "lwip/def.h" -#include "lwip/netif.h" #include "lwip/ip_addr.h" +#include "lwip/netif.h" #include "lwip/tcp.h" - struct netif *netif_list = NULL; struct netif *netif_default = NULL; diff --git a/src/core/raw.c b/src/core/raw.c index c4c69e54..f5792a4f 100644 --- a/src/core/raw.c +++ b/src/core/raw.c @@ -47,8 +47,8 @@ #include "lwip/def.h" #include "lwip/memp.h" #include "lwip/inet.h" -#include "lwip/netif.h" #include "lwip/ip_addr.h" +#include "lwip/netif.h" #include "lwip/raw.h" #include "lwip/stats.h" diff --git a/src/core/tcp_in.c b/src/core/tcp_in.c index 687fa14b..205df2f6 100644 --- a/src/core/tcp_in.c +++ b/src/core/tcp_in.c @@ -51,6 +51,7 @@ #include "lwip/def.h" #include "lwip/opt.h" +#include "lwip/ip_addr.h" #include "lwip/netif.h" #include "lwip/mem.h" #include "lwip/memp.h" diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c index d2964662..a63b06d2 100644 --- a/src/core/tcp_out.c +++ b/src/core/tcp_out.c @@ -51,6 +51,7 @@ #include "lwip/memp.h" #include "lwip/sys.h" +#include "lwip/ip_addr.h" #include "lwip/netif.h" #include "lwip/inet.h" @@ -63,8 +64,6 @@ /* Forward declarations.*/ static void tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb); - - err_t tcp_send_ctrl(struct tcp_pcb *pcb, u8_t flags) { diff --git a/src/core/udp.c b/src/core/udp.c index 1078514d..61a3aaa7 100644 --- a/src/core/udp.c +++ b/src/core/udp.c @@ -47,10 +47,10 @@ #include "lwip/def.h" #include "lwip/memp.h" #include "lwip/inet.h" +#include "lwip/ip_addr.h" #include "lwip/netif.h" #include "lwip/udp.h" #include "lwip/icmp.h" -#include "lwip/ip_addr.h" #include "lwip/stats.h" diff --git a/src/include/ipv4/lwip/icmp.h b/src/include/ipv4/lwip/icmp.h index 351e4565..634405b7 100644 --- a/src/include/ipv4/lwip/icmp.h +++ b/src/include/ipv4/lwip/icmp.h @@ -37,6 +37,7 @@ #include "lwip/opt.h" #include "lwip/pbuf.h" +#include "lwip/ip_addr.h" #include "lwip/netif.h" #define ICMP_ER 0 /* echo reply */ diff --git a/src/include/ipv4/lwip/ip_addr.h b/src/include/ipv4/lwip/ip_addr.h index e7efd2ad..40cbb4ea 100644 --- a/src/include/ipv4/lwip/ip_addr.h +++ b/src/include/ipv4/lwip/ip_addr.h @@ -34,6 +34,28 @@ #include "lwip/arch.h" +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct ip_addr { + PACK_STRUCT_FIELD(u32_t addr); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/* For compatibility with BSD code */ +struct in_addr { + u32_t s_addr; +}; + +#include "lwip/netif.h" + +extern const struct ip_addr ip_addr_any; +extern const struct ip_addr ip_addr_broadcast; + /** IP_ADDR_ can be used as a fixed IP address * for the wildcard and the broadcast address */ @@ -76,25 +98,6 @@ #define IN_LOOPBACKNET 127 /* official! */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_addr { - PACK_STRUCT_FIELD(u32_t addr); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/* For compatibility with BSD code */ -struct in_addr { - u32_t s_addr; -}; - -extern const struct ip_addr ip_addr_any; -extern const struct ip_addr ip_addr_broadcast; #define IP4_ADDR(ipaddr, a,b,c,d) (ipaddr)->addr = htonl(((u32_t)(a & 0xff) << 24) | ((u32_t)(b & 0xff) << 16) | \ ((u32_t)(c & 0xff) << 8) | (u32_t)(d & 0xff)) @@ -110,13 +113,13 @@ extern const struct ip_addr ip_addr_broadcast; #define ip_addr_isany(addr1) ((addr1) == NULL || (addr1)->addr == 0) -#if 1 /* replaced by function in ip_addr.c */ +#if 0 /* replaced by function in ip_addr.c */ #define ip_addr_isbroadcast(addr1, mask) (((((addr1)->addr) & ~((mask)->addr)) == \ (0xffffffff & ~((mask)->addr))) || \ ((addr1)->addr == 0xffffffff) || \ ((addr1)->addr == 0x00000000)) #else -u8_t ip_addr_isbroadcast(struct ip_addr *addr, struct netif *netif); +u8_t ip_addr_isbroadcast(struct ip_addr *, struct netif *); #endif #define ip_addr_ismulticast(addr1) (((addr1)->addr & ntohl(0xf0000000)) == ntohl(0xe0000000)) diff --git a/src/include/lwip/netif.h b/src/include/lwip/netif.h index 12894936..3d571d7f 100644 --- a/src/include/lwip/netif.h +++ b/src/include/lwip/netif.h @@ -40,7 +40,9 @@ #include "lwip/inet.h" #include "lwip/pbuf.h" -#include "lwip/dhcp.h" +#if LWIP_DHCP +# include "lwip/dhcp.h" +#endif /** must be the maximum of all used hardware address lengths across all types of interfaces in use */