diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2010-06-02 16:04:52 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2010-06-17 08:28:25 +0200 |
commit | 57e1fc33bda4f4f215bdaa7ebb2a79cc5aac3799 (patch) | |
tree | b7fca4099609294be88d04e68c560092d7e3a8d2 /include | |
parent | c70689d72780cf0385a361bd754347c5e4a1ba97 (diff) | |
download | barebox-57e1fc33bda4f4f215bdaa7ebb2a79cc5aac3799.tar.gz barebox-57e1fc33bda4f4f215bdaa7ebb2a79cc5aac3799.tar.xz |
net: remove old network stack
All network commands now use the new stack, so remove the old one.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/net.h | 359 |
1 files changed, 2 insertions, 357 deletions
diff --git a/include/net.h b/include/net.h index 0ee7ecb8a6..a2863d0829 100644 --- a/include/net.h +++ b/include/net.h @@ -19,39 +19,8 @@ #include <asm/byteorder.h> /* for nton* / ntoh* stuff */ -/* - * The number of receive packet buffers, and the required packet buffer - * alignment in memory. - * - */ - -#ifdef CFG_RX_ETH_BUFFER -# define PKTBUFSRX CFG_RX_ETH_BUFFER -#else -# define PKTBUFSRX 4 -#endif - -#define PKTALIGN 32 - -/* - * The current receive packet handler. Called with a pointer to the - * application packet, and a protocol type (PORT_BOOTPC or PORT_TFTP). - * All other packets are dealt with without calling the handler. - */ -typedef void rxhand_f(uchar *, unsigned, unsigned, unsigned); - -/* - * A timeout handler. Called after time interval has expired. - */ -typedef void thand_f(void); - -#define NAMESIZE 16 - -enum eth_state_t { - ETH_STATE_INIT, - ETH_STATE_PASSIVE, - ETH_STATE_ACTIVE -}; +/* The number of receive packet buffers */ +#define PKTBUFSRX 4 struct device_d; @@ -92,328 +61,6 @@ int eth_rx(void); /* Check for received packets */ void eth_halt(void); /* stop SCC */ char *eth_get_name(void); /* get name of current device */ - -/**********************************************************************/ -/* - * Protocol headers. - */ - -/* - * Ethernet header - */ -typedef struct { - uchar et_dest[6]; /* Destination node */ - uchar et_src[6]; /* Source node */ - ushort et_protlen; /* Protocol or length */ - uchar et_dsap; /* 802 DSAP */ - uchar et_ssap; /* 802 SSAP */ - uchar et_ctl; /* 802 control */ - uchar et_snap1; /* SNAP */ - uchar et_snap2; - uchar et_snap3; - ushort et_prot; /* 802 protocol */ -} Ethernet_t; - -#define ETHER_HDR_SIZE 14 /* Ethernet header size */ -#define E802_HDR_SIZE 22 /* 802 ethernet header size */ - -/* - * Ethernet header - */ -typedef struct { - uchar vet_dest[6]; /* Destination node */ - uchar vet_src[6]; /* Source node */ - ushort vet_vlan_type; /* PROT_VLAN */ - ushort vet_tag; /* TAG of VLAN */ - ushort vet_type; /* protocol type */ -} VLAN_Ethernet_t; - -#define VLAN_ETHER_HDR_SIZE 18 /* VLAN Ethernet header size */ - -#define PROT_IP 0x0800 /* IP protocol */ -#define PROT_ARP 0x0806 /* IP ARP protocol */ -#define PROT_RARP 0x8035 /* IP ARP protocol */ -#define PROT_VLAN 0x8100 /* IEEE 802.1q protocol */ - -#define IPPROTO_ICMP 1 /* Internet Control Message Protocol */ -#define IPPROTO_UDP 17 /* User Datagram Protocol */ - -/* - * Internet Protocol (IP) header. - */ -typedef struct { - 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 */ - ushort udp_src; /* UDP source port */ - ushort udp_dst; /* UDP destination port */ - ushort udp_len; /* Length of UDP packet */ - ushort udp_xsum; /* Checksum */ -} IP_t; - -#define IP_HDR_SIZE_NO_UDP (sizeof (IP_t) - 8) -#define IP_HDR_SIZE (sizeof (IP_t)) - - -/* - * Address Resolution Protocol (ARP) header. - */ -typedef struct -{ - ushort ar_hrd; /* Format of hardware address */ -# define ARP_ETHER 1 /* Ethernet hardware address */ - ushort ar_pro; /* Format of protocol address */ - uchar ar_hln; /* Length of hardware address */ - uchar ar_pln; /* Length of protocol address */ - ushort ar_op; /* Operation */ -# define ARPOP_REQUEST 1 /* Request to resolve address */ -# define ARPOP_REPLY 2 /* Response to previous request */ - -# define RARPOP_REQUEST 3 /* Request to resolve address */ -# define RARPOP_REPLY 4 /* Response to previous request */ - - /* - * The remaining fields are variable in size, according to - * the sizes above, and are defined as appropriate for - * specific hardware/protocol combinations. - */ - uchar ar_data[0]; -} ARP_t; - -/* - * ICMP stuff (just enough to handle (host) redirect messages) - */ -#define ICMP_ECHO_REPLY 0 /* Echo reply */ -#define ICMP_REDIRECT 5 /* Redirect (change route) */ -#define ICMP_ECHO_REQUEST 8 /* Echo request */ - -/* Codes for REDIRECT. */ -#define ICMP_REDIR_NET 0 /* Redirect Net */ -#define ICMP_REDIR_HOST 1 /* Redirect Host */ - -typedef struct { - uchar type; - uchar code; - ushort checksum; - union { - struct { - ushort id; - ushort sequence; - } echo; - ulong gateway; - struct { - ushort __unused; - ushort mtu; - } frag; - } un; -} ICMP_t; - - -/* - * Maximum packet size; used to allocate packet storage. - * TFTP packets can be 524 bytes + IP header + ethernet header. - * Lets be conservative, and go for 38 * 16. (Must also be - * a multiple of 32 bytes). - */ -/* - * AS.HARNOIS : Better to set PKTSIZE to maximum size because - * traffic type is not always controlled - * maximum packet size = 1518 - * maximum packet size and multiple of 32 bytes = 1536 - */ -#define PKTSIZE 1518 -#define PKTSIZE_ALIGN 1536 -/*#define PKTSIZE 608*/ - -/* - * Maximum receive ring size; that is, the number of packets - * we can buffer before overflow happens. Basically, this just - * needs to be enough to prevent a packet being discarded while - * we are processing the previous one. - */ -#define RINGSZ 4 -#define RINGSZ_LOG2 2 - -/**********************************************************************/ -/* - * Globals. - * - * Note: - * - * All variables of type IPaddr_t are stored in NETWORK byte order - * (big endian). - */ - -/* net.c */ -/** BOOTP EXTENTIONS **/ -extern IPaddr_t NetOurGatewayIP; /* Our gateway IP addresse */ -extern IPaddr_t NetOurSubnetMask; /* Our subnet mask (0 = unknown)*/ -extern IPaddr_t NetOurDNSIP; /* Our Domain Name Server (0 = unknown)*/ -extern IPaddr_t NetOurDNS2IP; /* Our 2nd Domain Name Server (0 = unknown)*/ -extern char NetOurNISDomain[32]; /* Our NIS domain */ -extern char NetOurHostName[32]; /* Our hostname */ -extern char NetOurRootPath[64]; /* Our root path */ -/** END OF BOOTP EXTENTIONS **/ -extern ulong NetBootFileXferSize; /* size of bootfile in bytes */ -extern uchar NetOurEther[6]; /* Our ethernet address */ -extern uchar NetServerEther[6]; /* Boot server enet address */ -extern IPaddr_t NetOurIP; /* Our IP addr (0 = unknown) */ -extern IPaddr_t NetServerIP; /* Server IP addr (0 = unknown) */ -extern uchar * NetTxPacket; /* THE transmit packet */ -extern uchar * NetRxPackets[PKTBUFSRX];/* Receive packets */ -extern uchar * NetRxPkt; /* Current receive packet */ -extern int NetRxPktLen; /* Current rx packet length */ -extern unsigned NetIPID; /* IP ID (counting) */ -extern uchar NetBcastAddr[6]; /* Ethernet boardcast address */ -extern uchar NetEtherNullAddr[6]; - -#define VLAN_NONE 4095 /* untagged */ -#define VLAN_IDMASK 0x0fff /* mask of valid vlan id */ -extern ushort NetOurVLAN; /* Our VLAN */ -extern ushort NetOurNativeVLAN; /* Our Native VLAN */ - -extern int NetState; /* Network loop state */ - -/* ---------- Added by sha ------------ */ -extern IPaddr_t NetArpWaitPacketIP; -extern uchar *NetArpWaitPacketMAC; -extern uchar *NetArpWaitTxPacket; /* THE transmit packet */ -extern int NetArpWaitTxPacketSize; -extern int NetArpWaitTry; -extern uint64_t NetArpWaitTimerStart; -extern void ArpRequest (void); -/* ------------------------------------ */ - -#define NETLOOP_CONTINUE 1 -#define NETLOOP_SUCCESS 2 -#define NETLOOP_FAIL 3 - -typedef enum { BOOTP, RARP, ARP, TFTP, DHCP, PING, DNS, NFS, CDP, NETCONS, SNTP } proto_t; - -/* Initialize the network adapter */ -int NetLoopInit(proto_t); - -/* Do the work */ -int NetLoop(void); - -/* Shutdown adapters and cleanup */ -void NetStop(void); - -/* Load failed. Start again. */ -void NetStartAgain(void); - -/* Get size of the ethernet header when we send */ -int NetEthHdrSize(void); - -/* Set ethernet header; returns the size of the header */ -int NetSetEther(uchar *, uchar *, uint); - -/* Set IP header */ -void NetSetIP(uchar *, IPaddr_t, int, int, int); - -/* Checksum */ -int NetCksumOk(uchar *, int); /* Return true if cksum OK */ -uint NetCksum(uchar *, int); /* Calculate the checksum */ - -/* Set callbacks */ -void NetSetHandler(rxhand_f *); /* Set RX packet handler */ -void NetSetTimeout(uint64_t, thand_f *);/* Set timeout handler */ - -/* Transmit "NetTxPacket" */ -void NetSendPacket(uchar *, int); - -/* Transmit UDP packet, performing ARP request if needed */ -int NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len); - -/* Processes a received packet */ -void NetReceive(uchar *, int); - -/* Print an IP address on the console */ -#ifdef CONFIG_NET -void print_IPaddr (IPaddr_t); -#else -#define print_IPaddr(IPaddr_t); -#endif - -void netboot_update_env(void); - -/* - * The following functions are a bit ugly, but necessary to deal with - * alignment restrictions on ARM. - * - * We're using inline functions, which had the smallest memory - * footprint in our tests. - */ -/* return IP *in network byteorder* */ -static inline IPaddr_t NetReadIP(void *from) -{ - IPaddr_t ip; - memcpy((void*)&ip, from, sizeof(ip)); - return ip; -} - -/* return ulong *in network byteorder* */ -static inline ulong NetReadLong(ulong *from) -{ - ulong l; - memcpy((void*)&l, (void*)from, sizeof(l)); - return l; -} - -/* write IP *in network byteorder* */ -static inline void NetWriteIP(void *to, IPaddr_t ip) -{ - memcpy(to, (void*)&ip, sizeof(ip)); -} - -/* copy IP */ -static inline void NetCopyIP(void *to, void *from) -{ - memcpy(to, from, sizeof(IPaddr_t)); -} - -/* copy ulong */ -static inline void NetCopyLong(ulong *to, ulong *from) -{ - memcpy((void*)to, (void*)from, sizeof(ulong)); -} - -/* Convert an IP address to a string */ -char * ip_to_string (IPaddr_t x, char *s); - -/* Convert a string to ip address */ -int string_to_ip(const char *s, IPaddr_t *ip); - -/* Convert a VLAN id to a string */ -void VLAN_to_string (ushort x, char *s); - -/* Convert a string to a vlan id */ -ushort string_to_VLAN(const char *s); - -/* read an IP address from a environment variable */ -IPaddr_t getenv_IPaddr (char *); - -/* read a VLAN id from an environment variable */ -ushort getenv_VLAN(char *); - -int string_to_ethaddr(const char *str, char *enetaddr); -void ethaddr_to_string(const unsigned char *enetaddr, char *str); - -/**********************************************************************/ -/* Network devices */ -/**********************************************************************/ - -void eth_set_current(struct eth_device *eth); -struct eth_device *eth_get_current(void); -struct eth_device *eth_get_byname(char *name); - /* * Ethernet header */ @@ -577,8 +224,6 @@ static inline int net_eth_to_udplen(char *pkt) int net_checksum_ok(unsigned char *, int); /* Return true if cksum OK */ uint16_t net_checksum(unsigned char *, int); /* Calculate the checksum */ -void NetReceive(unsigned char *, int); - /* Print an IP address on the console */ void print_IPaddr (IPaddr_t); |