net: cosmetic: Split struct ip_udp_hdr into ip_hdr
Add a structure that only contains IP header fields to be used by functions that don't need UDP Rename IP_HDR_SIZE_NO_UDP to IP_HDR_SIZE Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
parent
594c26f8a7
commit
c5c59df04d
|
@ -193,6 +193,30 @@ typedef struct {
|
|||
#define IPPROTO_ICMP 1 /* Internet Control Message Protocol */
|
||||
#define IPPROTO_UDP 17 /* User Datagram Protocol */
|
||||
|
||||
/*
|
||||
* Internet Protocol (IP) header.
|
||||
*/
|
||||
struct ip_hdr {
|
||||
uchar ip_hl_v; /* header length and version */
|
||||
uchar ip_tos; /* type of service */
|
||||
ushort ip_len; /* total length */
|
||||
ushort ip_id; /* identification */
|
||||
ushort ip_off; /* fragment offset field */
|
||||
uchar ip_ttl; /* time to live */
|
||||
uchar ip_p; /* protocol */
|
||||
ushort ip_sum; /* checksum */
|
||||
IPaddr_t ip_src; /* Source IP address */
|
||||
IPaddr_t ip_dst; /* Destination IP address */
|
||||
};
|
||||
|
||||
#define IP_OFFS 0x1fff /* ip offset *= 8 */
|
||||
#define IP_FLAGS 0xe000 /* first 3 bits */
|
||||
#define IP_FLAGS_RES 0x8000 /* reserved */
|
||||
#define IP_FLAGS_DFRAG 0x4000 /* don't fragments */
|
||||
#define IP_FLAGS_MFRAG 0x2000 /* more fragments */
|
||||
|
||||
#define IP_HDR_SIZE (sizeof(struct ip_hdr))
|
||||
|
||||
/*
|
||||
* Internet Protocol (IP) + UDP header.
|
||||
*/
|
||||
|
@ -213,16 +237,8 @@ struct ip_udp_hdr {
|
|||
ushort udp_xsum; /* Checksum */
|
||||
};
|
||||
|
||||
#define IP_OFFS 0x1fff /* ip offset *= 8 */
|
||||
#define IP_FLAGS 0xe000 /* first 3 bits */
|
||||
#define IP_FLAGS_RES 0x8000 /* reserved */
|
||||
#define IP_FLAGS_DFRAG 0x4000 /* don't fragments */
|
||||
#define IP_FLAGS_MFRAG 0x2000 /* more fragments */
|
||||
|
||||
#define IP_HDR_SIZE_NO_UDP (sizeof(struct ip_udp_hdr) - 8)
|
||||
|
||||
#define IP_UDP_HDR_SIZE (sizeof(struct ip_udp_hdr))
|
||||
#define UDP_HDR_SIZE (IP_UDP_HDR_SIZE - IP_HDR_SIZE_NO_UDP)
|
||||
#define UDP_HDR_SIZE (IP_UDP_HDR_SIZE - IP_HDR_SIZE)
|
||||
|
||||
/*
|
||||
* Address Resolution Protocol (ARP) header.
|
||||
|
|
16
net/net.c
16
net/net.c
|
@ -663,7 +663,7 @@ NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len)
|
|||
static struct rpc_t rpc_specimen;
|
||||
#define IP_PKTSIZE (CONFIG_NET_MAXDEFRAG + sizeof(rpc_specimen.u.reply))
|
||||
|
||||
#define IP_MAXUDP (IP_PKTSIZE - IP_HDR_SIZE_NO_UDP)
|
||||
#define IP_MAXUDP (IP_PKTSIZE - IP_HDR_SIZE)
|
||||
|
||||
/*
|
||||
* this is the packet being assembled, either data or frag control.
|
||||
|
@ -688,11 +688,11 @@ static struct ip_udp_hdr *__NetDefragment(struct ip_udp_hdr *ip, int *lenp)
|
|||
u16 ip_off = ntohs(ip->ip_off);
|
||||
|
||||
/* payload starts after IP header, this fragment is in there */
|
||||
payload = (struct hole *)(pkt_buff + IP_HDR_SIZE_NO_UDP);
|
||||
payload = (struct hole *)(pkt_buff + IP_HDR_SIZE);
|
||||
offset8 = (ip_off & IP_OFFS);
|
||||
thisfrag = payload + offset8;
|
||||
start = offset8 * 8;
|
||||
len = ntohs(ip->ip_len) - IP_HDR_SIZE_NO_UDP;
|
||||
len = ntohs(ip->ip_len) - IP_HDR_SIZE;
|
||||
|
||||
if (start + len > IP_MAXUDP) /* fragment extends too far */
|
||||
return NULL;
|
||||
|
@ -705,7 +705,7 @@ static struct ip_udp_hdr *__NetDefragment(struct ip_udp_hdr *ip, int *lenp)
|
|||
payload[0].prev_hole = 0;
|
||||
first_hole = 0;
|
||||
/* any IP header will work, copy the first we received */
|
||||
memcpy(localip, ip, IP_HDR_SIZE_NO_UDP);
|
||||
memcpy(localip, ip, IP_HDR_SIZE);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -788,12 +788,12 @@ static struct ip_udp_hdr *__NetDefragment(struct ip_udp_hdr *ip, int *lenp)
|
|||
}
|
||||
|
||||
/* finally copy this fragment and possibly return whole packet */
|
||||
memcpy((uchar *)thisfrag, indata + IP_HDR_SIZE_NO_UDP, len);
|
||||
memcpy((uchar *)thisfrag, indata + IP_HDR_SIZE, len);
|
||||
if (!done)
|
||||
return NULL;
|
||||
|
||||
localip->ip_len = htons(total_len);
|
||||
*lenp = total_len + IP_HDR_SIZE_NO_UDP;
|
||||
*lenp = total_len + IP_HDR_SIZE;
|
||||
return localip;
|
||||
}
|
||||
|
||||
|
@ -983,7 +983,7 @@ NetReceive(uchar *inpkt, int len)
|
|||
if ((ip->ip_hl_v & 0x0f) > 0x05)
|
||||
return;
|
||||
/* Check the Checksum of the header */
|
||||
if (!NetCksumOk((uchar *)ip, IP_HDR_SIZE_NO_UDP / 2)) {
|
||||
if (!NetCksumOk((uchar *)ip, IP_HDR_SIZE / 2)) {
|
||||
puts("checksum bad\n");
|
||||
return;
|
||||
}
|
||||
|
@ -1273,7 +1273,7 @@ void NetSetIP(uchar *xip, IPaddr_t dest, int dport, int sport, int len)
|
|||
ip->udp_dst = htons(dport);
|
||||
ip->udp_len = htons(UDP_HDR_SIZE + len);
|
||||
ip->udp_xsum = 0;
|
||||
ip->ip_sum = ~NetCksum((uchar *)ip, IP_HDR_SIZE_NO_UDP / 2);
|
||||
ip->ip_sum = ~NetCksum((uchar *)ip, IP_HDR_SIZE / 2);
|
||||
}
|
||||
|
||||
void copy_filename(char *dst, const char *src, int size)
|
||||
|
|
10
net/ping.c
10
net/ping.c
|
@ -44,7 +44,7 @@ static int ping_send(void)
|
|||
/* IP_HDR_SIZE / 4 (not including UDP) */
|
||||
ip->ip_hl_v = 0x45;
|
||||
ip->ip_tos = 0;
|
||||
ip->ip_len = htons(IP_HDR_SIZE_NO_UDP + 8);
|
||||
ip->ip_len = htons(IP_HDR_SIZE + 8);
|
||||
ip->ip_id = htons(NetIPID++);
|
||||
ip->ip_off = htons(IP_FLAGS_DFRAG); /* Don't fragment */
|
||||
ip->ip_ttl = 255;
|
||||
|
@ -54,7 +54,7 @@ static int ping_send(void)
|
|||
NetCopyIP((void *)&ip->ip_src, &NetOurIP);
|
||||
/* - "" - */
|
||||
NetCopyIP((void *)&ip->ip_dst, &NetPingIP);
|
||||
ip->ip_sum = ~NetCksum((uchar *)ip, IP_HDR_SIZE_NO_UDP / 2);
|
||||
ip->ip_sum = ~NetCksum((uchar *)ip, IP_HDR_SIZE / 2);
|
||||
|
||||
s = &ip->udp_src; /* XXX ICMP starts here */
|
||||
s[0] = htons(0x0800); /* echo-request, code */
|
||||
|
@ -65,7 +65,7 @@ static int ping_send(void)
|
|||
|
||||
/* size of the waiting packet */
|
||||
NetArpWaitTxPacketSize =
|
||||
(pkt - NetArpWaitTxPacket) + IP_HDR_SIZE_NO_UDP + 8;
|
||||
(pkt - NetArpWaitTxPacket) + IP_HDR_SIZE + 8;
|
||||
|
||||
/* and do the ARP request */
|
||||
NetArpWaitTry = 1;
|
||||
|
@ -125,12 +125,12 @@ void ping_receive(Ethernet_t *et, struct ip_udp_hdr *ip, int len)
|
|||
NetCopyIP((void *)&ip->ip_dst, &ip->ip_src);
|
||||
NetCopyIP((void *)&ip->ip_src, &NetOurIP);
|
||||
ip->ip_sum = ~NetCksum((uchar *)ip,
|
||||
IP_HDR_SIZE_NO_UDP >> 1);
|
||||
IP_HDR_SIZE >> 1);
|
||||
|
||||
icmph->type = ICMP_ECHO_REPLY;
|
||||
icmph->checksum = 0;
|
||||
icmph->checksum = ~NetCksum((uchar *)icmph,
|
||||
(len - IP_HDR_SIZE_NO_UDP) >> 1);
|
||||
(len - IP_HDR_SIZE) >> 1);
|
||||
(void) eth_send((uchar *)et,
|
||||
ETHER_HDR_SIZE + len);
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue