net/ip: fix compile break if disable NET_TCP

1.
ipfrag/ipv4_frag.c: In function ‘ipv4_fragin’:
ipfrag/ipv4_frag.c:184:22: warning: ‘head’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  184 |   ipv4->len[1] = head->io_pktlen & 0xff;
      |                  ~~~~^~~~~~~~~~~
ipfrag/ipv4_frag.c:123:21: note: ‘head’ was declared here
  123 |   FAR struct iob_s *head;
      |                     ^~~~

2.
devif/ipv6_input.c: In function ‘ipv6_in’:
devif/ipv6_input.c:60:33: error: ‘TCPIPv6BUF’ undeclared (first use in this function); did you mean ‘UDPIPv6BUF’?
   60 | #define PAYLOAD ((FAR uint8_t *)TCPIPv6BUF)
      |                                 ^~~~~~~~~~

3.
nat/ipv4_nat.c: In function ‘ipv4_nat_inbound_icmp’:
nat/ipv4_nat.c:67:30: error: ‘TCP_HDRLEN’ undeclared (first use in this function); did you mean ‘UDP_HDRLEN’?
   67 |   ((proto) == IP_PROTO_TCP ? TCP_HDRLEN : \
      |                              ^~~~~~~~~~
nat/ipv4_nat.c:323:47: note: in expansion of macro ‘L4_HDRLEN’
  323 |             inner_l4hdrlen = MIN(inner_l4len, L4_HDRLEN(inner->proto));
      |                                               ^~~~~~~~~

Signed-off-by: chao an <anchao@xiaomi.com>
This commit is contained in:
chao an 2023-02-07 16:15:57 +08:00 committed by Petro Karashchenko
parent 97e994a1f9
commit e3a6c16944
4 changed files with 44 additions and 17 deletions

View File

@ -53,12 +53,6 @@
#include "devif/devif.h"
#include "ipfrag/ipfrag.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#define PAYLOAD ((FAR uint8_t *)TCPIPv6BUF)
/****************************************************************************
* Private Functions
****************************************************************************/
@ -273,9 +267,9 @@ static int ipv6_in(FAR struct net_driver_s *dev)
/* Parse IPv6 extension headers (parsed but ignored) */
payload = PAYLOAD; /* Assume payload starts right after IPv6 header */
iphdrlen = IPv6_HDRLEN; /* Total length of the IPv6 header */
nxthdr = ipv6->proto; /* Next header determined by IPv6 header prototype */
payload = IPBUF(IPv6_HDRLEN); /* Assume payload starts right after IPv6 header */
iphdrlen = IPv6_HDRLEN; /* Total length of the IPv6 header */
nxthdr = ipv6->proto; /* Next header determined by IPv6 header prototype */
while (ipv6_exthdr(nxthdr))
{

View File

@ -120,7 +120,7 @@ ipv4_fragin_getinfo(FAR struct iob_s *iob,
static uint32_t ipv4_fragin_reassemble(FAR struct ip_fragsnode_s *node)
{
FAR struct iob_s *head;
FAR struct iob_s *head = NULL;
FAR struct ipv4_hdr_s *ipv4;
FAR struct ip_fraglink_s *fraglink;

View File

@ -171,7 +171,7 @@ static int32_t ipv6_fragin_getinfo(FAR struct iob_s *iob,
static uint32_t ipv6_fragin_reassemble(FAR struct ip_fragsnode_s *node)
{
FAR struct iob_s *head;
FAR struct iob_s *head = NULL;
FAR struct ipv6_hdr_s *ipv6;
FAR struct ip_fraglink_s *fraglink;

View File

@ -63,10 +63,6 @@
#define L4_HDR(ipv4) \
(FAR void *)((FAR uint8_t *)(ipv4) + (((ipv4)->vhl & IPv4_HLMASK) << 2))
#define L4_HDRLEN(proto) \
((proto) == IP_PROTO_TCP ? TCP_HDRLEN : \
(proto) == IP_PROTO_UDP ? UDP_HDRLEN : ICMP_HDRLEN)
#if defined(CONFIG_NET_TCP)
# define L4_MAXHDRLEN TCP_HDRLEN
#elif defined(CONFIG_NET_UDP)
@ -88,6 +84,41 @@ ipv4_nat_outbound_internal(FAR struct net_driver_s *dev,
FAR struct ipv4_hdr_s *ipv4,
enum nat_manip_type_e manip_type);
/****************************************************************************
* Inline Functions
****************************************************************************/
/****************************************************************************
* Name: ipv4_nat_l4_hdrlen
*
* Description:
* Get L4 header length
*
****************************************************************************/
static inline uint16_t ipv4_nat_l4_hdrlen(uint8_t proto)
{
switch (proto)
{
#ifdef CONFIG_NET_TCP
case IP_PROTO_TCP:
return TCP_HDRLEN;
#endif
#ifdef CONFIG_NET_UDP
case IP_PROTO_UDP:
return UDP_HDRLEN;
#endif
#ifdef CONFIG_NET_ICMP
case IP_PROTO_ICMP:
return ICMP_HDRLEN;
#endif
default:
DEBUGASSERT(false);
}
return 0;
}
/****************************************************************************
* Private Functions
****************************************************************************/
@ -320,7 +351,8 @@ ipv4_nat_inbound_icmp(FAR struct ipv4_hdr_s *ipv4,
/* Try backup origin L4 header for later checksum update. */
inner_l4hdrlen = MIN(inner_l4len, L4_HDRLEN(inner->proto));
inner_l4hdrlen = MIN(inner_l4len,
ipv4_nat_l4_hdrlen(inner->proto));
DEBUGASSERT((intptr_t)inner_l4 - (intptr_t)ipv4 + inner_l4hdrlen
<= CONFIG_IOB_BUFSIZE);
memcpy(inner_l4hdrbak, inner_l4, inner_l4hdrlen);
@ -541,7 +573,8 @@ ipv4_nat_outbound_icmp(FAR struct net_driver_s *dev,
/* Try backup origin L4 header for later checksum update. */
inner_l4hdrlen = MIN(inner_l4len, L4_HDRLEN(inner->proto));
inner_l4hdrlen = MIN(inner_l4len,
ipv4_nat_l4_hdrlen(inner->proto));
DEBUGASSERT((intptr_t)inner_l4 - (intptr_t)ipv4 + inner_l4hdrlen
<= CONFIG_IOB_BUFSIZE);
memcpy(inner_l4hdrbak, inner_l4, inner_l4hdrlen);