zephyr/subsys/net/ip/net_private.h
David B. Kinder ac74d8b652 license: Replace Apache boilerplate with SPDX tag
Replace the existing Apache 2.0 boilerplate header with an SPDX tag
throughout the zephyr code tree. This patch was generated via a
script run over the master branch.

Also updated doc/porting/application.rst that had a dependency on
line numbers in a literal include.

Manually updated subsys/logging/sys_log.c that had a malformed
header in the original file.  Also cleanup several cases that already
had a SPDX tag and we either got a duplicate or missed updating.

Jira: ZEP-1457

Change-Id: I6131a1d4ee0e58f5b938300c2d2fc77d2e69572c
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2017-01-19 03:50:58 +00:00

194 lines
3.8 KiB
C

/** @file
@brief Network stack private header
This is not to be included by the application.
*/
/*
* Copyright (c) 2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <errno.h>
#include <stdio.h>
#include <net/net_context.h>
#include <net/nbuf.h>
extern void net_nbuf_init(void);
extern void net_if_init(void);
extern void net_context_init(void);
extern void net_ipv6_init(void);
extern char *net_byte_to_hex(uint8_t *ptr, uint8_t byte, char base, bool pad);
extern char *net_sprint_ll_addr_buf(const uint8_t *ll, uint8_t ll_len,
char *buf, int buflen);
extern char *net_sprint_ip_addr_buf(const uint8_t *ip, int ip_len,
char *buf, int buflen);
extern uint16_t net_calc_chksum(struct net_buf *buf, uint8_t proto);
#if defined(CONFIG_NET_IPV4)
extern uint16_t net_calc_chksum_ipv4(struct net_buf *buf);
#endif /* CONFIG_NET_IPV4 */
static inline uint16_t net_calc_chksum_icmpv6(struct net_buf *buf)
{
return net_calc_chksum(buf, IPPROTO_ICMPV6);
}
static inline uint16_t net_calc_chksum_icmpv4(struct net_buf *buf)
{
return net_calc_chksum(buf, IPPROTO_ICMP);
}
static inline uint16_t net_calc_chksum_udp(struct net_buf *buf)
{
return net_calc_chksum(buf, IPPROTO_UDP);
}
static inline uint16_t net_calc_chksum_tcp(struct net_buf *buf)
{
return net_calc_chksum(buf, IPPROTO_TCP);
}
#if NET_LOG_ENABLED > 0
static inline char *net_sprint_ll_addr(const uint8_t *ll, uint8_t ll_len)
{
static char buf[sizeof("xx:xx:xx:xx:xx:xx:xx:xx")];
return net_sprint_ll_addr_buf(ll, ll_len, (char *)buf, sizeof(buf));
}
static inline char *net_sprint_ip_addr_ptr(const uint8_t *ptr, uint8_t len)
{
static char buf[NET_IPV6_ADDR_LEN];
return net_sprint_ip_addr_buf(ptr, len, (char *)buf, sizeof(buf));
}
static inline char *net_sprint_ipv6_addr(const struct in6_addr *addr)
{
#if defined(CONFIG_NET_IPV6)
return net_sprint_ip_addr_ptr(addr->s6_addr, 16);
#else
return NULL;
#endif
}
static inline char *net_sprint_ipv4_addr(const struct in_addr *addr)
{
#if defined(CONFIG_NET_IPV4)
return net_sprint_ip_addr_ptr(addr->s4_addr, 4);
#else
return NULL;
#endif
}
static inline char *net_sprint_ip_addr(const struct net_addr *addr)
{
switch (addr->family) {
case AF_INET6:
#if defined(CONFIG_NET_IPV6)
return net_sprint_ipv6_addr(&addr->in6_addr);
#else
break;
#endif
case AF_INET:
#if defined(CONFIG_NET_IPV4)
return net_sprint_ipv4_addr(&addr->in_addr);
#else
break;
#endif
default:
break;
}
return NULL;
}
static inline void net_hexdump(const char *str, const uint8_t *packet, size_t length)
{
int n = 0;
if (!length) {
SYS_LOG_DBG("%s zero-length packet", str);
return;
}
while (length--) {
if (n % 16 == 0) {
printf("%s %08X ", str, n);
}
printf("%02X ", *packet++);
n++;
if (n % 8 == 0) {
if (n % 16 == 0) {
printf("\n");
} else {
printf(" ");
}
}
}
if (n % 16) {
printf("\n");
}
}
/* Hexdump from all fragments */
static inline void net_hexdump_frags(const char *str, struct net_buf *buf)
{
struct net_buf *frag = buf->frags;
while (frag) {
net_hexdump(str, frag->data, net_nbuf_get_len(frag));
frag = frag->frags;
}
}
#else /* NET_LOG_ENABLED */
static inline char *net_sprint_ll_addr(const uint8_t *ll, uint8_t ll_len)
{
ARG_UNUSED(ll);
ARG_UNUSED(ll_len);
return NULL;
}
static inline char *net_sprint_ip_addr_ptr(const uint8_t *ptr, uint8_t len)
{
ARG_UNUSED(ptr);
ARG_UNUSED(len);
return NULL;
}
static inline char *net_sprint_ipv6_addr(const struct in6_addr *addr)
{
ARG_UNUSED(addr);
return NULL;
}
static inline char *net_sprint_ipv4_addr(const struct in_addr *addr)
{
ARG_UNUSED(addr);
return NULL;
}
static inline char *net_sprint_ip_addr(const struct net_addr *addr)
{
ARG_UNUSED(addr);
return NULL;
}
#define net_hexdump(str, packet, length)
#define net_hexdump_frags(...)
#endif /* NET_LOG_ENABLED */