]> git.sur5r.net Git - u-boot/blobdiff - include/net.h
* Patch by Andre Schwarz, 24 Nov 2003:
[u-boot] / include / net.h
index b4106fe5eb7c9deebf0028e734d7a72e908ddb4d..39debc673d6aa53a0f3d00f5c3c8dfbe4053f736 100644 (file)
 #ifndef __NET_H__
 #define __NET_H__
 
-#if !defined(CONFIG_NET_MULTI) && defined(CONFIG_8xx)
+#if defined(CONFIG_8xx)
 #include <commproc.h>
-#if defined(FEC_ENET) || defined(SCC_ENET)
-#define CONFIG_NET_MULTI
-#endif
-#endif
-
-#if !defined(CONFIG_NET_MULTI) && defined(CONFIG_8260)
+# if !defined(CONFIG_NET_MULTI)
+#  if defined(FEC_ENET) || defined(SCC_ENET)
+#   define CONFIG_NET_MULTI
+#  endif
+# endif
+#endif /* CONFIG_8xx */
+
+#if defined(CONFIG_MPC5XXX)
+# if !defined(CONFIG_NET_MULTI)
+#  if defined(CONFIG_MPC5XXX_FEC)
+#   define CONFIG_NET_MULTI
+#  endif
+# endif
+#endif /* CONFIG_MPC5XXX */
+
+#if !defined(CONFIG_NET_MULTI) && (defined(CONFIG_8260) || defined(CONFIG_MPC8560))
 #include <config.h>
 #if defined(CONFIG_ETHER_ON_FCC)
 #if defined(CONFIG_ETHER_ON_SCC)
  *
  */
 
-#ifndef        CONFIG_EEPRO100
-#define PKTBUFSRX      4
+#ifdef CFG_RX_ETH_BUFFER
+# define PKTBUFSRX     CFG_RX_ETH_BUFFER
 #else
-#define PKTBUFSRX      8
+# define PKTBUFSRX     4
 #endif
 
 #define PKTALIGN       32
@@ -62,7 +72,6 @@
 typedef ulong          IPaddr_t;
 
 
-
 /*
  * The current receive packet handler.  Called with a pointer to the
  * application packet, and a protocol type (PORT_BOOTPC or PORT_TFTP).
@@ -75,8 +84,6 @@ typedef void  rxhand_f(uchar *, unsigned, unsigned, unsigned);
  */
 typedef void   thand_f(void);
 
-#ifdef CONFIG_NET_MULTI
-
 #define NAMESIZE 16
 
 enum eth_state_t {
@@ -105,12 +112,12 @@ extern int eth_register(struct eth_device* dev);/* Register network device        */
 extern void eth_try_another(int first_restart);        /* Change the device            */
 extern struct eth_device *eth_get_dev(void);   /* get the current device MAC   */
 extern void eth_set_enetaddr(int num, char* a);        /* Set new MAC address          */
-#endif
 
 extern int eth_init(bd_t *bis);                        /* Initialize the device        */
 extern int eth_send(volatile void *packet, int length);           /* Send a packet     */
 extern int eth_rx(void);                       /* Check for received packets   */
 extern void eth_halt(void);                    /* stop SCC                     */
+extern char *eth_get_name(void);               /* get name of current device   */
 
 
 /**********************************************************************/
@@ -185,9 +192,9 @@ typedef struct
 #   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.
+        * 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];
 #if 0
@@ -203,7 +210,9 @@ typedef struct
 /*
  * 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                 */
@@ -227,7 +236,6 @@ typedef struct icmphdr {
 } ICMP_t;
 
 
-
 /*
  * Maximum packet size; used to allocate packet storage.
  * TFTP packets can be 524 bytes + IP header + ethernet header.
@@ -268,6 +276,9 @@ typedef struct icmphdr {
 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)*/
+#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_DNS2)
+extern IPaddr_t                NetOurDNS2IP;    /* Our 2nd Domain Name Server (0 = unknown)*/
+#endif
 extern char            NetOurNISDomain[32];    /* Our NIS domain               */
 extern char            NetOurHostName[32];     /* Our hostname                 */
 extern char            NetOurRootPath[64];     /* Our root path                */
@@ -295,11 +306,15 @@ extern int                NetState;               /* Network loop state           */
 extern int             NetRestartWrap;         /* Tried all network devices    */
 #endif
 
-typedef enum { BOOTP, RARP, ARP, TFTP, DHCP } proto_t;
+typedef enum { BOOTP, RARP, ARP, TFTP, DHCP, PING, DNS } proto_t;
 
 /* from net/net.c */
 extern char    BootFile[128];                  /* Boot File name               */
 
+#if (CONFIG_COMMANDS & CFG_CMD_PING)
+extern IPaddr_t        NetPingIP;                      /* the ip address to ping               */
+#endif
+
 /* Initialize the network adapter */
 extern int     NetLoop(proto_t);
 
@@ -326,6 +341,9 @@ extern void NetSetTimeout(int, thand_f *);  /* Set timeout handler          */
 /* Transmit "NetTxPacket" */
 extern void    NetSendPacket(volatile uchar *, int);
 
+/* Transmit UDP packet, performing ARP request if needed */
+extern int     NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len);
+
 /* Processes a received packet */
 extern void    NetReceive(volatile uchar *, int);
 
@@ -376,6 +394,9 @@ static inline void NetCopyLong(ulong *to, ulong *from)
 /* Convert an IP address to a string */
 extern void    ip_to_string (IPaddr_t x, char *s);
 
+/* Convert a string to ip address */
+extern IPaddr_t string_to_ip(char *s);
+
 /* read an IP address from a environment variable */
 extern IPaddr_t getenv_IPaddr (char *);