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_ICMP 1 /* Internet Control Message Protocol */
|
||||||
#define IPPROTO_UDP 17 /* User Datagram 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.
|
* Internet Protocol (IP) + UDP header.
|
||||||
*/
|
*/
|
||||||
|
@ -213,16 +237,8 @@ struct ip_udp_hdr {
|
||||||
ushort udp_xsum; /* Checksum */
|
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 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.
|
* 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;
|
static struct rpc_t rpc_specimen;
|
||||||
#define IP_PKTSIZE (CONFIG_NET_MAXDEFRAG + sizeof(rpc_specimen.u.reply))
|
#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.
|
* 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);
|
u16 ip_off = ntohs(ip->ip_off);
|
||||||
|
|
||||||
/* payload starts after IP header, this fragment is in there */
|
/* 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);
|
offset8 = (ip_off & IP_OFFS);
|
||||||
thisfrag = payload + offset8;
|
thisfrag = payload + offset8;
|
||||||
start = offset8 * 8;
|
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 */
|
if (start + len > IP_MAXUDP) /* fragment extends too far */
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -705,7 +705,7 @@ static struct ip_udp_hdr *__NetDefragment(struct ip_udp_hdr *ip, int *lenp)
|
||||||
payload[0].prev_hole = 0;
|
payload[0].prev_hole = 0;
|
||||||
first_hole = 0;
|
first_hole = 0;
|
||||||
/* any IP header will work, copy the first we received */
|
/* 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 */
|
/* 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)
|
if (!done)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
localip->ip_len = htons(total_len);
|
localip->ip_len = htons(total_len);
|
||||||
*lenp = total_len + IP_HDR_SIZE_NO_UDP;
|
*lenp = total_len + IP_HDR_SIZE;
|
||||||
return localip;
|
return localip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -983,7 +983,7 @@ NetReceive(uchar *inpkt, int len)
|
||||||
if ((ip->ip_hl_v & 0x0f) > 0x05)
|
if ((ip->ip_hl_v & 0x0f) > 0x05)
|
||||||
return;
|
return;
|
||||||
/* Check the Checksum of the header */
|
/* 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");
|
puts("checksum bad\n");
|
||||||
return;
|
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_dst = htons(dport);
|
||||||
ip->udp_len = htons(UDP_HDR_SIZE + len);
|
ip->udp_len = htons(UDP_HDR_SIZE + len);
|
||||||
ip->udp_xsum = 0;
|
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)
|
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_HDR_SIZE / 4 (not including UDP) */
|
||||||
ip->ip_hl_v = 0x45;
|
ip->ip_hl_v = 0x45;
|
||||||
ip->ip_tos = 0;
|
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_id = htons(NetIPID++);
|
||||||
ip->ip_off = htons(IP_FLAGS_DFRAG); /* Don't fragment */
|
ip->ip_off = htons(IP_FLAGS_DFRAG); /* Don't fragment */
|
||||||
ip->ip_ttl = 255;
|
ip->ip_ttl = 255;
|
||||||
|
@ -54,7 +54,7 @@ static int ping_send(void)
|
||||||
NetCopyIP((void *)&ip->ip_src, &NetOurIP);
|
NetCopyIP((void *)&ip->ip_src, &NetOurIP);
|
||||||
/* - "" - */
|
/* - "" - */
|
||||||
NetCopyIP((void *)&ip->ip_dst, &NetPingIP);
|
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 = &ip->udp_src; /* XXX ICMP starts here */
|
||||||
s[0] = htons(0x0800); /* echo-request, code */
|
s[0] = htons(0x0800); /* echo-request, code */
|
||||||
|
@ -65,7 +65,7 @@ static int ping_send(void)
|
||||||
|
|
||||||
/* size of the waiting packet */
|
/* size of the waiting packet */
|
||||||
NetArpWaitTxPacketSize =
|
NetArpWaitTxPacketSize =
|
||||||
(pkt - NetArpWaitTxPacket) + IP_HDR_SIZE_NO_UDP + 8;
|
(pkt - NetArpWaitTxPacket) + IP_HDR_SIZE + 8;
|
||||||
|
|
||||||
/* and do the ARP request */
|
/* and do the ARP request */
|
||||||
NetArpWaitTry = 1;
|
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_dst, &ip->ip_src);
|
||||||
NetCopyIP((void *)&ip->ip_src, &NetOurIP);
|
NetCopyIP((void *)&ip->ip_src, &NetOurIP);
|
||||||
ip->ip_sum = ~NetCksum((uchar *)ip,
|
ip->ip_sum = ~NetCksum((uchar *)ip,
|
||||||
IP_HDR_SIZE_NO_UDP >> 1);
|
IP_HDR_SIZE >> 1);
|
||||||
|
|
||||||
icmph->type = ICMP_ECHO_REPLY;
|
icmph->type = ICMP_ECHO_REPLY;
|
||||||
icmph->checksum = 0;
|
icmph->checksum = 0;
|
||||||
icmph->checksum = ~NetCksum((uchar *)icmph,
|
icmph->checksum = ~NetCksum((uchar *)icmph,
|
||||||
(len - IP_HDR_SIZE_NO_UDP) >> 1);
|
(len - IP_HDR_SIZE) >> 1);
|
||||||
(void) eth_send((uchar *)et,
|
(void) eth_send((uchar *)et,
|
||||||
ETHER_HDR_SIZE + len);
|
ETHER_HDR_SIZE + len);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue