|
|
@ -80,14 +80,14 @@ struct eth_device { |
|
|
|
int iobase; |
|
|
|
int iobase; |
|
|
|
int state; |
|
|
|
int state; |
|
|
|
|
|
|
|
|
|
|
|
int (*init) (struct eth_device*, bd_t*); |
|
|
|
int (*init) (struct eth_device *, bd_t *); |
|
|
|
int (*send) (struct eth_device*, void *packet, int length); |
|
|
|
int (*send) (struct eth_device *, void *packet, int length); |
|
|
|
int (*recv) (struct eth_device*); |
|
|
|
int (*recv) (struct eth_device *); |
|
|
|
void (*halt) (struct eth_device*); |
|
|
|
void (*halt) (struct eth_device *); |
|
|
|
#ifdef CONFIG_MCAST_TFTP |
|
|
|
#ifdef CONFIG_MCAST_TFTP |
|
|
|
int (*mcast) (struct eth_device*, u32 ip, u8 set); |
|
|
|
int (*mcast) (struct eth_device *, u32 ip, u8 set); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
int (*write_hwaddr) (struct eth_device*); |
|
|
|
int (*write_hwaddr) (struct eth_device *); |
|
|
|
struct eth_device *next; |
|
|
|
struct eth_device *next; |
|
|
|
int index; |
|
|
|
int index; |
|
|
|
void *priv; |
|
|
|
void *priv; |
|
|
@ -101,7 +101,7 @@ extern void eth_set_current(void); /* set nterface to ethcur var */ |
|
|
|
extern struct eth_device *eth_get_dev(void); /* get the current device MAC */ |
|
|
|
extern struct eth_device *eth_get_dev(void); /* get the current device MAC */ |
|
|
|
extern struct eth_device *eth_get_dev_by_name(const char *devname); |
|
|
|
extern struct eth_device *eth_get_dev_by_name(const char *devname); |
|
|
|
extern struct eth_device *eth_get_dev_by_index(int index); /* get dev @ index */ |
|
|
|
extern struct eth_device *eth_get_dev_by_index(int index); /* get dev @ index */ |
|
|
|
extern int eth_get_dev_index (void); /* get the device index */ |
|
|
|
extern int eth_get_dev_index(void); /* get the device index */ |
|
|
|
extern void eth_parse_enetaddr(const char *addr, uchar *enetaddr); |
|
|
|
extern void eth_parse_enetaddr(const char *addr, uchar *enetaddr); |
|
|
|
extern int eth_getenv_enetaddr(char *name, uchar *enetaddr); |
|
|
|
extern int eth_getenv_enetaddr(char *name, uchar *enetaddr); |
|
|
|
extern int eth_setenv_enetaddr(char *name, const uchar *enetaddr); |
|
|
|
extern int eth_setenv_enetaddr(char *name, const uchar *enetaddr); |
|
|
@ -143,8 +143,8 @@ int eth_write_hwaddr(struct eth_device *dev, const char *base_name, |
|
|
|
int eth_number); |
|
|
|
int eth_number); |
|
|
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_MCAST_TFTP |
|
|
|
#ifdef CONFIG_MCAST_TFTP |
|
|
|
int eth_mcast_join( IPaddr_t mcast_addr, u8 join); |
|
|
|
int eth_mcast_join(IPaddr_t mcast_addr, u8 join); |
|
|
|
u32 ether_crc (size_t len, unsigned char const *p); |
|
|
|
u32 ether_crc(size_t len, unsigned char const *p); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -219,8 +219,8 @@ typedef struct { |
|
|
|
#define IP_FLAGS_DFRAG 0x4000 /* don't fragments */ |
|
|
|
#define IP_FLAGS_DFRAG 0x4000 /* don't fragments */ |
|
|
|
#define IP_FLAGS_MFRAG 0x2000 /* more fragments */ |
|
|
|
#define IP_FLAGS_MFRAG 0x2000 /* more fragments */ |
|
|
|
|
|
|
|
|
|
|
|
#define IP_HDR_SIZE_NO_UDP (sizeof (IP_t) - 8) |
|
|
|
#define IP_HDR_SIZE_NO_UDP (sizeof(IP_t) - 8) |
|
|
|
#define IP_HDR_SIZE (sizeof (IP_t)) |
|
|
|
#define IP_HDR_SIZE (sizeof(IP_t)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
@ -327,11 +327,11 @@ typedef struct icmphdr { |
|
|
|
|
|
|
|
|
|
|
|
/* net.c */ |
|
|
|
/* net.c */ |
|
|
|
/** BOOTP EXTENTIONS **/ |
|
|
|
/** BOOTP EXTENTIONS **/ |
|
|
|
extern IPaddr_t NetOurGatewayIP; /* Our gateway IP addresse */ |
|
|
|
extern IPaddr_t NetOurGatewayIP; /* Our gateway IP address */ |
|
|
|
extern IPaddr_t NetOurSubnetMask; /* Our subnet mask (0 = unknown)*/ |
|
|
|
extern IPaddr_t NetOurSubnetMask; /* Our subnet mask (0 = unknown) */ |
|
|
|
extern IPaddr_t NetOurDNSIP; /* Our Domain Name Server (0 = unknown)*/ |
|
|
|
extern IPaddr_t NetOurDNSIP; /* Our Domain Name Server (0 = unknown) */ |
|
|
|
#if defined(CONFIG_BOOTP_DNS2) |
|
|
|
#if defined(CONFIG_BOOTP_DNS2) |
|
|
|
extern IPaddr_t NetOurDNS2IP; /* Our 2nd Domain Name Server (0 = unknown)*/ |
|
|
|
extern IPaddr_t NetOurDNS2IP; /* Our 2nd Domain Name Server (0 = unknown) */ |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
extern char NetOurNISDomain[32]; /* Our NIS domain */ |
|
|
|
extern char NetOurNISDomain[32]; /* Our NIS domain */ |
|
|
|
extern char NetOurHostName[32]; /* Our hostname */ |
|
|
|
extern char NetOurHostName[32]; /* Our hostname */ |
|
|
@ -344,7 +344,7 @@ extern uchar NetServerEther[6]; /* Boot server enet address */ |
|
|
|
extern IPaddr_t NetOurIP; /* Our IP addr (0 = unknown) */ |
|
|
|
extern IPaddr_t NetOurIP; /* Our IP addr (0 = unknown) */ |
|
|
|
extern IPaddr_t NetServerIP; /* Server IP addr (0 = unknown) */ |
|
|
|
extern IPaddr_t NetServerIP; /* Server IP addr (0 = unknown) */ |
|
|
|
extern uchar *NetTxPacket; /* THE transmit packet */ |
|
|
|
extern uchar *NetTxPacket; /* THE transmit packet */ |
|
|
|
extern uchar *NetRxPackets[PKTBUFSRX];/* Receive packets */ |
|
|
|
extern uchar *NetRxPackets[PKTBUFSRX]; /* Receive packets */ |
|
|
|
extern uchar *NetRxPacket; /* Current receive packet */ |
|
|
|
extern uchar *NetRxPacket; /* Current receive packet */ |
|
|
|
extern int NetRxPacketLen; /* Current rx packet length */ |
|
|
|
extern int NetRxPacketLen; /* Current rx packet length */ |
|
|
|
extern unsigned NetIPID; /* IP ID (counting) */ |
|
|
|
extern unsigned NetIPID; /* IP ID (counting) */ |
|
|
@ -427,7 +427,8 @@ extern void NetSetTimeout(ulong, thand_f *);/* Set timeout handler */ |
|
|
|
extern void NetSendPacket(uchar *, int); |
|
|
|
extern void NetSendPacket(uchar *, int); |
|
|
|
|
|
|
|
|
|
|
|
/* Transmit UDP packet, performing ARP request if needed */ |
|
|
|
/* Transmit UDP packet, performing ARP request if needed */ |
|
|
|
extern int NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len); |
|
|
|
extern int NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, |
|
|
|
|
|
|
|
int sport, int len); |
|
|
|
|
|
|
|
|
|
|
|
/* Processes a received packet */ |
|
|
|
/* Processes a received packet */ |
|
|
|
extern void NetReceive(uchar *, int); |
|
|
|
extern void NetReceive(uchar *, int); |
|
|
@ -449,7 +450,8 @@ void net_auto_load(void); |
|
|
|
static inline IPaddr_t NetReadIP(void *from) |
|
|
|
static inline IPaddr_t NetReadIP(void *from) |
|
|
|
{ |
|
|
|
{ |
|
|
|
IPaddr_t ip; |
|
|
|
IPaddr_t ip; |
|
|
|
memcpy((void*)&ip, (void*)from, sizeof(ip)); |
|
|
|
|
|
|
|
|
|
|
|
memcpy((void *)&ip, (void *)from, sizeof(ip)); |
|
|
|
return ip; |
|
|
|
return ip; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -457,26 +459,27 @@ static inline IPaddr_t NetReadIP(void *from) |
|
|
|
static inline ulong NetReadLong(ulong *from) |
|
|
|
static inline ulong NetReadLong(ulong *from) |
|
|
|
{ |
|
|
|
{ |
|
|
|
ulong l; |
|
|
|
ulong l; |
|
|
|
memcpy((void*)&l, (void*)from, sizeof(l)); |
|
|
|
|
|
|
|
|
|
|
|
memcpy((void *)&l, (void *)from, sizeof(l)); |
|
|
|
return l; |
|
|
|
return l; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* write IP *in network byteorder* */ |
|
|
|
/* write IP *in network byteorder* */ |
|
|
|
static inline void NetWriteIP(void *to, IPaddr_t ip) |
|
|
|
static inline void NetWriteIP(void *to, IPaddr_t ip) |
|
|
|
{ |
|
|
|
{ |
|
|
|
memcpy(to, (void*)&ip, sizeof(ip)); |
|
|
|
memcpy(to, (void *)&ip, sizeof(ip)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* copy IP */ |
|
|
|
/* copy IP */ |
|
|
|
static inline void NetCopyIP(void *to, void *from) |
|
|
|
static inline void NetCopyIP(void *to, void *from) |
|
|
|
{ |
|
|
|
{ |
|
|
|
memcpy((void*)to, from, sizeof(IPaddr_t)); |
|
|
|
memcpy((void *)to, from, sizeof(IPaddr_t)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* copy ulong */ |
|
|
|
/* copy ulong */ |
|
|
|
static inline void NetCopyLong(ulong *to, ulong *from) |
|
|
|
static inline void NetCopyLong(ulong *to, ulong *from) |
|
|
|
{ |
|
|
|
{ |
|
|
|
memcpy((void*)to, (void*)from, sizeof(ulong)); |
|
|
|
memcpy((void *)to, (void *)from, sizeof(ulong)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -499,7 +502,7 @@ static inline int is_zero_ether_addr(const u8 *addr) |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
static inline int is_multicast_ether_addr(const u8 *addr) |
|
|
|
static inline int is_multicast_ether_addr(const u8 *addr) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return (0x01 & addr[0]); |
|
|
|
return 0x01 & addr[0]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
@ -510,7 +513,8 @@ static inline int is_multicast_ether_addr(const u8 *addr) |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
static inline int is_broadcast_ether_addr(const u8 *addr) |
|
|
|
static inline int is_broadcast_ether_addr(const u8 *addr) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return (addr[0] & addr[1] & addr[2] & addr[3] & addr[4] & addr[5]) == 0xff; |
|
|
|
return (addr[0] & addr[1] & addr[2] & addr[3] & addr[4] & addr[5]) == |
|
|
|
|
|
|
|
0xff; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
@ -530,13 +534,13 @@ static inline int is_valid_ether_addr(const u8 *addr) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* Convert an IP address to a string */ |
|
|
|
/* Convert an IP address to a string */ |
|
|
|
extern void ip_to_string (IPaddr_t x, char *s); |
|
|
|
extern void ip_to_string(IPaddr_t x, char *s); |
|
|
|
|
|
|
|
|
|
|
|
/* Convert a string to ip address */ |
|
|
|
/* Convert a string to ip address */ |
|
|
|
extern IPaddr_t string_to_ip(const char *s); |
|
|
|
extern IPaddr_t string_to_ip(const char *s); |
|
|
|
|
|
|
|
|
|
|
|
/* Convert a VLAN id to a string */ |
|
|
|
/* Convert a VLAN id to a string */ |
|
|
|
extern void VLAN_to_string (ushort x, char *s); |
|
|
|
extern void VLAN_to_string(ushort x, char *s); |
|
|
|
|
|
|
|
|
|
|
|
/* Convert a string to a vlan id */ |
|
|
|
/* Convert a string to a vlan id */ |
|
|
|
extern ushort string_to_VLAN(const char *s); |
|
|
|
extern ushort string_to_VLAN(const char *s); |
|
|
@ -545,7 +549,7 @@ extern ushort string_to_VLAN(const char *s); |
|
|
|
extern ushort getenv_VLAN(char *); |
|
|
|
extern ushort getenv_VLAN(char *); |
|
|
|
|
|
|
|
|
|
|
|
/* copy a filename (allow for "..." notation, limit length) */ |
|
|
|
/* copy a filename (allow for "..." notation, limit length) */ |
|
|
|
extern void copy_filename (char *dst, const char *src, int size); |
|
|
|
extern void copy_filename(char *dst, const char *src, int size); |
|
|
|
|
|
|
|
|
|
|
|
/* get a random source port */ |
|
|
|
/* get a random source port */ |
|
|
|
extern unsigned int random_port(void); |
|
|
|
extern unsigned int random_port(void); |
|
|
|