net: cosmetic: Replace magic numbers in arp.c with constants

Use field names and sizes when accessing ARP packets

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
Joe Hershberger 2012-05-23 07:58:17 +00:00
parent 1256793b18
commit 674bb24982
2 changed files with 23 additions and 17 deletions

View File

@ -259,7 +259,9 @@ struct arp_hdr {
# define ARP_ETHER 1 /* Ethernet hardware address */ # define ARP_ETHER 1 /* Ethernet hardware address */
ushort ar_pro; /* Format of protocol address */ ushort ar_pro; /* Format of protocol address */
uchar ar_hln; /* Length of hardware address */ uchar ar_hln; /* Length of hardware address */
# define ARP_HLEN 6
uchar ar_pln; /* Length of protocol address */ uchar ar_pln; /* Length of protocol address */
# define ARP_PLEN 4
ushort ar_op; /* Operation */ ushort ar_op; /* Operation */
# define ARPOP_REQUEST 1 /* Request to resolve address */ # define ARPOP_REQUEST 1 /* Request to resolve address */
# define ARPOP_REPLY 2 /* Response to previous request */ # define ARPOP_REPLY 2 /* Response to previous request */
@ -273,6 +275,10 @@ struct arp_hdr {
* specific hardware/protocol combinations. * specific hardware/protocol combinations.
*/ */
uchar ar_data[0]; uchar ar_data[0];
#define ar_sha ar_data[0]
#define ar_spa ar_data[ARP_HLEN]
#define ar_tha ar_data[ARP_HLEN + ARP_PLEN]
#define ar_tpa ar_data[ARP_HLEN + ARP_PLEN + ARP_HLEN]
#if 0 #if 0
uchar ar_sha[]; /* Sender hardware address */ uchar ar_sha[]; /* Sender hardware address */
uchar ar_spa[]; /* Sender protocol address */ uchar ar_spa[]; /* Sender protocol address */

View File

@ -63,16 +63,16 @@ void ArpRequest(void)
arp->ar_hrd = htons(ARP_ETHER); arp->ar_hrd = htons(ARP_ETHER);
arp->ar_pro = htons(PROT_IP); arp->ar_pro = htons(PROT_IP);
arp->ar_hln = 6; arp->ar_hln = ARP_HLEN;
arp->ar_pln = 4; arp->ar_pln = ARP_PLEN;
arp->ar_op = htons(ARPOP_REQUEST); arp->ar_op = htons(ARPOP_REQUEST);
/* source ET addr */ /* source ET addr */
memcpy(&arp->ar_data[0], NetOurEther, 6); memcpy(&arp->ar_sha, NetOurEther, ARP_HLEN);
/* source IP addr */ /* source IP addr */
NetWriteIP((uchar *) &arp->ar_data[6], NetOurIP); NetWriteIP(&arp->ar_spa, NetOurIP);
/* dest ET addr = 0 */ /* dest ET addr = 0 */
memset(&arp->ar_data[10], '\0', 6); memset(&arp->ar_tha, 0, ARP_HLEN);
if ((NetArpWaitPacketIP & NetOurSubnetMask) != if ((NetArpWaitPacketIP & NetOurSubnetMask) !=
(NetOurIP & NetOurSubnetMask)) { (NetOurIP & NetOurSubnetMask)) {
if (NetOurGatewayIP == 0) { if (NetOurGatewayIP == 0) {
@ -85,7 +85,7 @@ void ArpRequest(void)
NetArpWaitReplyIP = NetArpWaitPacketIP; NetArpWaitReplyIP = NetArpWaitPacketIP;
} }
NetWriteIP((uchar *) &arp->ar_data[16], NetArpWaitReplyIP); NetWriteIP(&arp->ar_tpa, NetArpWaitReplyIP);
(void) eth_send(NetTxPacket, (pkt - NetTxPacket) + ARP_HDR_SIZE); (void) eth_send(NetTxPacket, (pkt - NetTxPacket) + ARP_HDR_SIZE);
} }
@ -139,15 +139,15 @@ void ArpReceive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
return; return;
if (ntohs(arp->ar_pro) != PROT_IP) if (ntohs(arp->ar_pro) != PROT_IP)
return; return;
if (arp->ar_hln != 6) if (arp->ar_hln != ARP_HLEN)
return; return;
if (arp->ar_pln != 4) if (arp->ar_pln != ARP_PLEN)
return; return;
if (NetOurIP == 0) if (NetOurIP == 0)
return; return;
if (NetReadIP(&arp->ar_data[16]) != NetOurIP) if (NetReadIP(&arp->ar_tpa) != NetOurIP)
return; return;
switch (ntohs(arp->ar_op)) { switch (ntohs(arp->ar_op)) {
@ -157,10 +157,10 @@ void ArpReceive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
pkt = (uchar *)et; pkt = (uchar *)et;
pkt += NetSetEther(pkt, et->et_src, PROT_ARP); pkt += NetSetEther(pkt, et->et_src, PROT_ARP);
arp->ar_op = htons(ARPOP_REPLY); arp->ar_op = htons(ARPOP_REPLY);
memcpy(&arp->ar_data[10], &arp->ar_data[0], 6); memcpy(&arp->ar_tha, &arp->ar_sha, ARP_HLEN);
NetCopyIP(&arp->ar_data[16], &arp->ar_data[6]); NetCopyIP(&arp->ar_tpa, &arp->ar_spa);
memcpy(&arp->ar_data[0], NetOurEther, 6); memcpy(&arp->ar_sha, NetOurEther, ARP_HLEN);
NetCopyIP(&arp->ar_data[6], &NetOurIP); NetCopyIP(&arp->ar_spa, &NetOurIP);
(void) eth_send((uchar *)et, (void) eth_send((uchar *)et,
(pkt - (uchar *)et) + ARP_HDR_SIZE); (pkt - (uchar *)et) + ARP_HDR_SIZE);
return; return;
@ -173,12 +173,12 @@ void ArpReceive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
#ifdef CONFIG_KEEP_SERVERADDR #ifdef CONFIG_KEEP_SERVERADDR
if (NetServerIP == NetArpWaitPacketIP) { if (NetServerIP == NetArpWaitPacketIP) {
char buf[20]; char buf[20];
sprintf(buf, "%pM", arp->ar_data); sprintf(buf, "%pM", arp->ar_sha);
setenv("serveraddr", buf); setenv("serveraddr", buf);
} }
#endif #endif
reply_ip_addr = NetReadIP(&arp->ar_data[6]); reply_ip_addr = NetReadIP(&arp->ar_spa);
/* matched waiting packet's address */ /* matched waiting packet's address */
if (reply_ip_addr == NetArpWaitReplyIP) { if (reply_ip_addr == NetArpWaitReplyIP) {
@ -187,14 +187,14 @@ void ArpReceive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
/* save address for later use */ /* save address for later use */
memcpy(NetArpWaitPacketMAC, memcpy(NetArpWaitPacketMAC,
&arp->ar_data[0], 6); &arp->ar_sha, ARP_HLEN);
#ifdef CONFIG_NETCONSOLE #ifdef CONFIG_NETCONSOLE
NetGetHandler()(0, 0, 0, 0, 0); NetGetHandler()(0, 0, 0, 0, 0);
#endif #endif
/* modify header, and transmit it */ /* modify header, and transmit it */
memcpy(((struct ethernet_hdr *)NetArpWaitTxPacket)-> memcpy(((struct ethernet_hdr *)NetArpWaitTxPacket)->
et_dest, NetArpWaitPacketMAC, 6); et_dest, NetArpWaitPacketMAC, ARP_HLEN);
(void) eth_send(NetArpWaitTxPacket, (void) eth_send(NetArpWaitTxPacket,
NetArpWaitTxPacketSize); NetArpWaitTxPacketSize);