Selaa lähdekoodia

net: Encapsulate CDP packet identification

Checking for CDP packets should be encapsulated, not copied code.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Joe Hershberger 13 vuotta sitten
vanhempi
commit
1735188329
3 muutettua tiedostoa jossa 12 lisäystä ja 4 poistoa
  1. 1 1
      arch/powerpc/cpu/mpc8xx/fec.c
  2. 10 2
      include/net.h
  3. 1 1
      net/net.c

+ 1 - 1
arch/powerpc/cpu/mpc8xx/fec.c

@@ -274,7 +274,7 @@ static int fec_recv (struct eth_device *dev)
 #if defined(CONFIG_CMD_CDP)
 #if defined(CONFIG_CMD_CDP)
 			if ((rx[0] & 1) != 0
 			if ((rx[0] & 1) != 0
 			    && memcmp ((uchar *) rx, NetBcastAddr, 6) != 0
 			    && memcmp ((uchar *) rx, NetBcastAddr, 6) != 0
-			    && memcmp ((uchar *) rx, NetCDPAddr, 6) != 0)
+			    && !is_cdp_packet((uchar *)rx))
 				rx = NULL;
 				rx = NULL;
 #endif
 #endif
 			/*
 			/*

+ 10 - 2
include/net.h

@@ -356,8 +356,6 @@ extern uchar		NetEtherNullAddr[6];
 extern ushort		NetOurVLAN;		/* Our VLAN */
 extern ushort		NetOurVLAN;		/* Our VLAN */
 extern ushort		NetOurNativeVLAN;	/* Our Native VLAN */
 extern ushort		NetOurNativeVLAN;	/* Our Native VLAN */
 
 
-extern const uchar	NetCDPAddr[6];		/* Ethernet CDP address */
-
 extern int		NetState;		/* Network loop state */
 extern int		NetState;		/* Network loop state */
 #define NETLOOP_CONTINUE	1
 #define NETLOOP_CONTINUE	1
 #define NETLOOP_RESTART		2
 #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 */
 /* when CDP completes these hold the return values */
 extern ushort CDPNativeVLAN;		/* CDP returned native VLAN */
 extern ushort CDPNativeVLAN;		/* CDP returned native VLAN */
 extern ushort CDPApplianceVLAN;		/* CDP returned appliance 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
 #endif
 
 
 #if defined(CONFIG_CMD_SNTP)
 #if defined(CONFIG_CMD_SNTP)

+ 1 - 1
net/net.c

@@ -1099,7 +1099,7 @@ NetReceive(uchar *inpkt, int len)
 
 
 #if defined(CONFIG_CMD_CDP)
 #if defined(CONFIG_CMD_CDP)
 	/* keep track if packet is CDP */
 	/* keep track if packet is CDP */
-	iscdp = memcmp(et->et_dest, NetCDPAddr, 6) == 0;
+	iscdp = is_cdp_packet(et->et_dest);
 #endif
 #endif
 
 
 	myvlanid = ntohs(NetOurVLAN);
 	myvlanid = ntohs(NetOurVLAN);