diff options
-rw-r--r-- | drivers/net/netconsole.c | 4 | ||||
-rw-r--r-- | include/net.h | 11 | ||||
-rw-r--r-- | net/arp.c | 2 | ||||
-rw-r--r-- | net/arp.h | 2 | ||||
-rw-r--r-- | net/bootp.c | 4 | ||||
-rw-r--r-- | net/bootp.h | 2 | ||||
-rw-r--r-- | net/dns.c | 2 | ||||
-rw-r--r-- | net/net.c | 62 | ||||
-rw-r--r-- | net/nfs.c | 2 | ||||
-rw-r--r-- | net/ping.c | 6 | ||||
-rw-r--r-- | net/ping.h | 2 | ||||
-rw-r--r-- | net/rarp.c | 2 | ||||
-rw-r--r-- | net/rarp.h | 2 | ||||
-rw-r--r-- | net/sntp.c | 2 | ||||
-rw-r--r-- | net/tftp.c | 2 |
15 files changed, 55 insertions, 52 deletions
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 7acd5b00505..ba02fd762ae 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -69,7 +69,7 @@ void NcStart(void) /* send arp request */ uchar *pkt; NetSetHandler(nc_wait_arp_handler); - pkt = (uchar *)NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE; + pkt = (uchar *)NetTxPacket + NetEthHdrSize() + IP_UDP_HDR_SIZE; memcpy(pkt, output_packet, output_packet_len); NetSendUDPPacket(nc_ether, nc_ip, nc_port, nc_port, output_packet_len); @@ -131,7 +131,7 @@ static void nc_send_packet(const char *buf, int len) return; inited = 1; } - pkt = (uchar *)NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE; + pkt = (uchar *)NetTxPacket + NetEthHdrSize() + IP_UDP_HDR_SIZE; memcpy(pkt, buf, len); ether = nc_ether; ip = nc_ip; diff --git a/include/net.h b/include/net.h index 64700d915f1..3e4f304204f 100644 --- a/include/net.h +++ b/include/net.h @@ -194,9 +194,9 @@ typedef struct { #define IPPROTO_UDP 17 /* User Datagram Protocol */ /* - * Internet Protocol (IP) header. + * Internet Protocol (IP) + UDP header. */ -typedef struct { +struct ip_udp_hdr { uchar ip_hl_v; /* header length and version */ uchar ip_tos; /* type of service */ ushort ip_len; /* total length */ @@ -211,7 +211,7 @@ typedef struct { ushort udp_dst; /* UDP destination port */ ushort udp_len; /* Length of UDP packet */ ushort udp_xsum; /* Checksum */ -} IP_t; +}; #define IP_OFFS 0x1fff /* ip offset *= 8 */ #define IP_FLAGS 0xe000 /* first 3 bits */ @@ -219,9 +219,10 @@ typedef struct { #define IP_FLAGS_DFRAG 0x4000 /* don't fragments */ #define IP_FLAGS_MFRAG 0x2000 /* more fragments */ -#define IP_HDR_SIZE_NO_UDP (sizeof(IP_t) - 8) -#define IP_HDR_SIZE (sizeof(IP_t)) +#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) /* * Address Resolution Protocol (ARP) header. diff --git a/net/arp.c b/net/arp.c index f75217c614a..03272adf574 100644 --- a/net/arp.c +++ b/net/arp.c @@ -113,7 +113,7 @@ void ArpTimeoutCheck(void) } } -void ArpReceive(Ethernet_t *et, IP_t *ip, int len) +void ArpReceive(Ethernet_t *et, struct ip_udp_hdr *ip, int len) { ARP_t *arp; IPaddr_t tmp; diff --git a/net/arp.h b/net/arp.h index 4016a9099ab..b59fbdd2eda 100644 --- a/net/arp.h +++ b/net/arp.h @@ -25,6 +25,6 @@ extern int NetArpWaitTry; void ArpInit(void); void ArpRequest(void); void ArpTimeoutCheck(void); -void ArpReceive(Ethernet_t *et, IP_t *ip, int len); +void ArpReceive(Ethernet_t *et, struct ip_udp_hdr *ip, int len); #endif /* __ARP_H__ */ diff --git a/net/bootp.c b/net/bootp.c index 0185e5667c1..b8d27606761 100644 --- a/net/bootp.c +++ b/net/bootp.c @@ -622,7 +622,7 @@ BootpRequest(void) /* NetSetIP(pkt, 0xFFFFFFFFL, PORT_BOOTPS, PORT_BOOTPC, sizeof (struct Bootp_t)); */ iphdr = pkt; /* We need this later for NetSetIP() */ - pkt += IP_HDR_SIZE; + pkt += IP_UDP_HDR_SIZE; bp = (struct Bootp_t *)pkt; bp->bp_op = OP_BOOTREQUEST; @@ -807,7 +807,7 @@ static void DhcpSendRequestPkt(struct Bootp_t *bp_offer) pkt += NetSetEther(pkt, NetBcastAddr, PROT_IP); iphdr = pkt; /* We'll need this later to set proper pkt size */ - pkt += IP_HDR_SIZE; + pkt += IP_UDP_HDR_SIZE; bp = (struct Bootp_t *)pkt; bp->bp_op = OP_BOOTREQUEST; diff --git a/net/bootp.h b/net/bootp.h index bf4e8756a16..1cf9a02b24b 100644 --- a/net/bootp.h +++ b/net/bootp.h @@ -52,7 +52,7 @@ struct Bootp_t { }; #define BOOTP_HDR_SIZE sizeof(struct Bootp_t) -#define BOOTP_SIZE (ETHER_HDR_SIZE + IP_HDR_SIZE + BOOTP_HDR_SIZE) +#define BOOTP_SIZE (ETHER_HDR_SIZE + IP_UDP_HDR_SIZE + BOOTP_HDR_SIZE) /**********************************************************************/ /* diff --git a/net/dns.c b/net/dns.c index 7a3f1f9768a..cc7ed516919 100644 --- a/net/dns.c +++ b/net/dns.c @@ -45,7 +45,7 @@ DnsSend(void) enum dns_query_type qtype = DNS_A_RECORD; name = NetDNSResolve; - pkt = p = (uchar *)(NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE); + pkt = p = (uchar *)(NetTxPacket + NetEthHdrSize() + IP_UDP_HDR_SIZE); /* Prepare DNS packet header */ header = (struct header *) pkt; diff --git a/net/net.c b/net/net.c index ed86d01926f..f0e8a6798f9 100644 --- a/net/net.c +++ b/net/net.c @@ -619,12 +619,13 @@ NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len) pkt += NetSetEther(pkt, NetArpWaitPacketMAC, PROT_IP); NetSetIP(pkt, dest, dport, sport, len); - memcpy(pkt + IP_HDR_SIZE, (uchar *)NetTxPacket + - (pkt - (uchar *)NetArpWaitTxPacket) + IP_HDR_SIZE, len); + memcpy(pkt + IP_UDP_HDR_SIZE, (uchar *)NetTxPacket + + (pkt - (uchar *)NetArpWaitTxPacket) + + IP_UDP_HDR_SIZE, len); /* size of the waiting packet */ NetArpWaitTxPacketSize = (pkt - NetArpWaitTxPacket) + - IP_HDR_SIZE + len; + IP_UDP_HDR_SIZE + len; /* and do the ARP request */ NetArpWaitTry = 1; @@ -638,7 +639,7 @@ NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len) pkt = (uchar *)NetTxPacket; pkt += NetSetEther(pkt, ether, PROT_IP); NetSetIP(pkt, dest, dport, sport, len); - (void) eth_send(NetTxPacket, (pkt - NetTxPacket) + IP_HDR_SIZE + len); + eth_send(NetTxPacket, (pkt - NetTxPacket) + IP_UDP_HDR_SIZE + len); return 0; /* transmitted */ } @@ -676,12 +677,12 @@ struct hole { u16 unused; }; -static IP_t *__NetDefragment(IP_t *ip, int *lenp) +static struct ip_udp_hdr *__NetDefragment(struct ip_udp_hdr *ip, int *lenp) { static uchar pkt_buff[IP_PKTSIZE] __aligned(PKTALIGN); static u16 first_hole, total_len; struct hole *payload, *thisfrag, *h, *newh; - IP_t *localip = (IP_t *)pkt_buff; + struct ip_udp_hdr *localip = (struct ip_udp_hdr *)pkt_buff; uchar *indata = (uchar *)ip; int offset8, start, len, done = 0; u16 ip_off = ntohs(ip->ip_off); @@ -796,7 +797,7 @@ static IP_t *__NetDefragment(IP_t *ip, int *lenp) return localip; } -static inline IP_t *NetDefragment(IP_t *ip, int *lenp) +static inline struct ip_udp_hdr *NetDefragment(struct ip_udp_hdr *ip, int *lenp) { u16 ip_off = ntohs(ip->ip_off); if (!(ip_off & (IP_OFFS | IP_FLAGS_MFRAG))) @@ -806,7 +807,7 @@ static inline IP_t *NetDefragment(IP_t *ip, int *lenp) #else /* !CONFIG_IP_DEFRAG */ -static inline IP_t *NetDefragment(IP_t *ip, int *lenp) +static inline struct ip_udp_hdr *NetDefragment(struct ip_udp_hdr *ip, int *lenp) { u16 ip_off = ntohs(ip->ip_off); if (!(ip_off & (IP_OFFS | IP_FLAGS_MFRAG))) @@ -821,7 +822,8 @@ static inline IP_t *NetDefragment(IP_t *ip, int *lenp) * * @parma ip IP packet containing the ICMP */ -static void receive_icmp(IP_t *ip, int len, IPaddr_t src_ip, Ethernet_t *et) +static void receive_icmp(struct ip_udp_hdr *ip, int len, + IPaddr_t src_ip, Ethernet_t *et) { ICMP_t *icmph = (ICMP_t *)&ip->udp_src; @@ -850,7 +852,7 @@ void NetReceive(uchar *inpkt, int len) { Ethernet_t *et; - IP_t *ip; + struct ip_udp_hdr *ip; IPaddr_t tmp; IPaddr_t src_ip; int x; @@ -898,11 +900,11 @@ NetReceive(uchar *inpkt, int len) */ x = ntohs(et->et_prot); - ip = (IP_t *)(inpkt + E802_HDR_SIZE); + ip = (struct ip_udp_hdr *)(inpkt + E802_HDR_SIZE); len -= E802_HDR_SIZE; } else if (x != PROT_VLAN) { /* normal packet */ - ip = (IP_t *)(inpkt + ETHER_HDR_SIZE); + ip = (struct ip_udp_hdr *)(inpkt + ETHER_HDR_SIZE); len -= ETHER_HDR_SIZE; } else { /* VLAN packet */ @@ -926,7 +928,7 @@ NetReceive(uchar *inpkt, int len) vlanid = cti & VLAN_IDMASK; x = ntohs(vet->vet_type); - ip = (IP_t *)(inpkt + VLAN_ETHER_HDR_SIZE); + ip = (struct ip_udp_hdr *)(inpkt + VLAN_ETHER_HDR_SIZE); len -= VLAN_ETHER_HDR_SIZE; } @@ -961,8 +963,9 @@ NetReceive(uchar *inpkt, int len) case PROT_IP: debug("Got IP\n"); /* Before we start poking the header, make sure it is there */ - if (len < IP_HDR_SIZE) { - debug("len bad %d < %lu\n", len, (ulong)IP_HDR_SIZE); + if (len < IP_UDP_HDR_SIZE) { + debug("len bad %d < %lu\n", len, + (ulong)IP_UDP_HDR_SIZE); return; } /* Check the packet length */ @@ -1074,19 +1077,19 @@ NetReceive(uchar *inpkt, int len) #ifdef CONFIG_NETCONSOLE - nc_input_packet((uchar *)ip + IP_HDR_SIZE, - ntohs(ip->udp_dst), - ntohs(ip->udp_src), - ntohs(ip->udp_len) - 8); + nc_input_packet((uchar *)ip + IP_UDP_HDR_SIZE, + ntohs(ip->udp_dst), + ntohs(ip->udp_src), + ntohs(ip->udp_len) - UDP_HDR_SIZE); #endif /* * IP header OK. Pass the packet to the current handler. */ - (*packetHandler)((uchar *)ip + IP_HDR_SIZE, - ntohs(ip->udp_dst), - src_ip, - ntohs(ip->udp_src), - ntohs(ip->udp_len) - 8); + (*packetHandler)((uchar *)ip + IP_UDP_HDR_SIZE, + ntohs(ip->udp_dst), + src_ip, + ntohs(ip->udp_src), + ntohs(ip->udp_len) - UDP_HDR_SIZE); break; } } @@ -1237,10 +1240,9 @@ NetSetEther(uchar *xet, uchar * addr, uint prot) } } -void -NetSetIP(uchar *xip, IPaddr_t dest, int dport, int sport, int len) +void NetSetIP(uchar *xip, IPaddr_t dest, int dport, int sport, int len) { - IP_t *ip = (IP_t *)xip; + struct ip_udp_hdr *ip = (struct ip_udp_hdr *)xip; /* * If the data is an odd number of bytes, zero the @@ -1248,7 +1250,7 @@ NetSetIP(uchar *xip, IPaddr_t dest, int dport, int sport, int len) * will work. */ if (len & 1) - xip[IP_HDR_SIZE + len] = 0; + xip[IP_UDP_HDR_SIZE + len] = 0; /* * Construct an IP and UDP header. @@ -1257,7 +1259,7 @@ NetSetIP(uchar *xip, IPaddr_t dest, int dport, int sport, int len) /* IP_HDR_SIZE / 4 (not including UDP) */ ip->ip_hl_v = 0x45; ip->ip_tos = 0; - ip->ip_len = htons(IP_HDR_SIZE + len); + ip->ip_len = htons(IP_UDP_HDR_SIZE + len); ip->ip_id = htons(NetIPID++); ip->ip_off = htons(IP_FLAGS_DFRAG); /* Don't fragment */ ip->ip_ttl = 255; @@ -1269,7 +1271,7 @@ NetSetIP(uchar *xip, IPaddr_t dest, int dport, int sport, int len) NetCopyIP((void *)&ip->ip_dst, &dest); ip->udp_src = htons(sport); ip->udp_dst = htons(dport); - ip->udp_len = htons(8 + len); + ip->udp_len = htons(UDP_HDR_SIZE + len); ip->udp_xsum = 0; ip->ip_sum = ~NetCksum((uchar *)ip, IP_HDR_SIZE_NO_UDP / 2); } diff --git a/net/nfs.c b/net/nfs.c index 54f56c4611c..b6188fed36f 100644 --- a/net/nfs.c +++ b/net/nfs.c @@ -189,7 +189,7 @@ rpc_req(int rpc_prog, int rpc_proc, uint32_t *data, int datalen) pktlen = (char *)p + datalen*sizeof(uint32_t) - (char *)&pkt; - memcpy((char *)NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE, + memcpy((char *)NetTxPacket + NetEthHdrSize() + IP_UDP_HDR_SIZE, (char *)&pkt, pktlen); if (rpc_prog == PROG_PORTMAP) diff --git a/net/ping.c b/net/ping.c index 0e5b1dab710..6a2e85dabc3 100644 --- a/net/ping.c +++ b/net/ping.c @@ -19,7 +19,7 @@ IPaddr_t NetPingIP; static int ping_send(void) { static uchar mac[6]; - IP_t *ip; + struct ip_udp_hdr *ip; ushort *s; uchar *pkt; @@ -35,7 +35,7 @@ static int ping_send(void) pkt = NetArpWaitTxPacket; pkt += NetSetEther(pkt, mac, PROT_IP); - ip = (IP_t *)pkt; + ip = (struct ip_udp_hdr *)pkt; /* * Construct an IP and ICMP header. @@ -98,7 +98,7 @@ void ping_start(void) ping_send(); } -void ping_receive(Ethernet_t *et, IP_t *ip, int len) +void ping_receive(Ethernet_t *et, struct ip_udp_hdr *ip, int len) { ICMP_t *icmph = (ICMP_t *)&(ip->udp_src); IPaddr_t src_ip; diff --git a/net/ping.h b/net/ping.h index 246d3aa1051..0a2d7d17976 100644 --- a/net/ping.h +++ b/net/ping.h @@ -28,7 +28,7 @@ void ping_start(void); * @param ip IP header in the same packet * @param len Packet length */ -void ping_receive(Ethernet_t *et, IP_t *ip, int len); +void ping_receive(Ethernet_t *et, struct ip_udp_hdr *ip, int len); #endif /* __PING_H__ */ #endif diff --git a/net/rarp.c b/net/rarp.c index 660a02c5770..bd073c32a6d 100644 --- a/net/rarp.c +++ b/net/rarp.c @@ -41,7 +41,7 @@ int RarpTry; /* * Handle a RARP received packet. */ -void rarp_receive(IP_t *ip, unsigned len) +void rarp_receive(struct ip_udp_hdr *ip, unsigned len) { ARP_t *arp; diff --git a/net/rarp.h b/net/rarp.h index fc5b363c0a7..ebd748ea4ea 100644 --- a/net/rarp.h +++ b/net/rarp.h @@ -36,7 +36,7 @@ extern int RarpTry; /* Process the receipt of a RARP packet */ -extern void rarp_receive(IP_t *ip, unsigned len); +extern void rarp_receive(struct ip_udp_hdr *ip, unsigned len); extern void RarpRequest(void); /* Send a RARP request */ /**********************************************************************/ diff --git a/net/sntp.c b/net/sntp.c index 69cddb16b5c..07d036d41de 100644 --- a/net/sntp.c +++ b/net/sntp.c @@ -31,7 +31,7 @@ SntpSend(void) pkt.vn = NTP_VERSION; pkt.mode = NTP_MODE_CLIENT; - memcpy((char *)NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE, + memcpy((char *)NetTxPacket + NetEthHdrSize() + IP_UDP_HDR_SIZE, (char *)&pkt, pktlen); SntpOurPort = 10000 + (get_timer(0) % 4096); diff --git a/net/tftp.c b/net/tftp.c index bc7fe05465c..a04a832f8c7 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -322,7 +322,7 @@ TftpSend(void) * We will always be sending some sort of packet, so * cobble together the packet headers now. */ - pkt = (uchar *)(NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE); + pkt = NetTxPacket + NetEthHdrSize() + IP_UDP_HDR_SIZE; switch (TftpState) { case STATE_SEND_RRQ: |