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:
parent
1256793b18
commit
674bb24982
@ -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 */
|
||||||
|
34
net/arp.c
34
net/arp.c
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user