提交 17351883 编写于 作者: J Joe Hershberger

net: Encapsulate CDP packet identification

Checking for CDP packets should be encapsulated, not copied code.
Signed-off-by: NJoe Hershberger <joe.hershberger@ni.com>
上级 f575ae1f
......@@ -274,7 +274,7 @@ static int fec_recv (struct eth_device *dev)
#if defined(CONFIG_CMD_CDP)
if ((rx[0] & 1) != 0
&& memcmp ((uchar *) rx, NetBcastAddr, 6) != 0
&& memcmp ((uchar *) rx, NetCDPAddr, 6) != 0)
&& !is_cdp_packet((uchar *)rx))
rx = NULL;
#endif
/*
......
......@@ -356,8 +356,6 @@ extern uchar NetEtherNullAddr[6];
extern ushort NetOurVLAN; /* Our VLAN */
extern ushort NetOurNativeVLAN; /* Our Native VLAN */
extern const uchar NetCDPAddr[6]; /* Ethernet CDP address */
extern int NetState; /* Network loop state */
#define NETLOOP_CONTINUE 1
#define NETLOOP_RESTART 2
......@@ -387,6 +385,16 @@ extern IPaddr_t NetPingIP; /* the ip address to ping */
/* when CDP completes these hold the return values */
extern ushort CDPNativeVLAN; /* CDP returned native VLAN */
extern ushort CDPApplianceVLAN; /* CDP returned appliance VLAN */
/*
* Check for a CDP packet by examining the received MAC address field
*/
static inline int is_cdp_packet(const uchar *et_addr)
{
extern const uchar NetCDPAddr[6];
return memcmp(et_addr, NetCDPAddr, 6) == 0;
}
#endif
#if defined(CONFIG_CMD_SNTP)
......
......@@ -1099,7 +1099,7 @@ NetReceive(uchar *inpkt, int len)
#if defined(CONFIG_CMD_CDP)
/* keep track if packet is CDP */
iscdp = memcmp(et->et_dest, NetCDPAddr, 6) == 0;
iscdp = is_cdp_packet(et->et_dest);
#endif
myvlanid = ntohs(NetOurVLAN);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册