zephyr/include/net/arp.h
june li 3e4faffede net: l2: Clear arp cache when disable interface.
When connect to diffrent router with the same gateway ip address,
need to clear arp cache when disable interface,
or it will use the wrong gateway mac address.
Call net_arp_clear_cache function replace to set arp_table 0.

Change-Id: Ib403a0c0030832ba48824db4d2d3fcb8add63d16
Signed-off-by: june li <junelizh@foxmail.com>
2017-04-28 15:01:08 +03:00

53 lines
1.0 KiB
C

/** @file
@brief ARP handler
This is not to be included by the application.
*/
/*
* Copyright (c) 2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef __ARP_H
#define __ARP_H
#if defined(CONFIG_NET_ARP)
#include <net/ethernet.h>
#define NET_ARP_HDR(pkt) ((struct net_arp_hdr *)net_pkt_ip_data(pkt))
struct net_arp_hdr {
u16_t hwtype; /* HTYPE */
u16_t protocol; /* PTYPE */
u8_t hwlen; /* HLEN */
u8_t protolen; /* PLEN */
u16_t opcode;
struct net_eth_addr src_hwaddr; /* SHA */
struct in_addr src_ipaddr; /* SPA */
struct net_eth_addr dst_hwaddr; /* THA */
struct in_addr dst_ipaddr; /* TPA */
} __packed;
#define NET_ARP_HTYPE_ETH 1
#define NET_ARP_REQUEST 1
#define NET_ARP_REPLY 2
struct net_pkt *net_arp_prepare(struct net_pkt *pkt);
enum net_verdict net_arp_input(struct net_pkt *pkt);
void net_arp_clear_cache(void);
void net_arp_init(void);
#else /* CONFIG_NET_ARP */
#define net_arp_clear_cache(...)
#define net_arp_init(...)
#endif /* CONFIG_NET_ARP */
#endif /* __ARP_H */