diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/bootp.c | 344 | ||||
-rw-r--r-- | net/bootp.h | 56 | ||||
-rw-r--r-- | net/eth.c | 89 | ||||
-rw-r--r-- | net/net.c | 58 | ||||
-rw-r--r-- | net/nfs.c | 300 | ||||
-rw-r--r-- | net/nfs.h | 2 | ||||
-rw-r--r-- | net/rarp.c | 30 | ||||
-rw-r--r-- | net/rarp.h | 4 | ||||
-rw-r--r-- | net/sntp.c | 31 | ||||
-rw-r--r-- | net/sntp.h | 2 | ||||
-rw-r--r-- | net/tftp.c | 36 | ||||
-rw-r--r-- | net/tftp.h | 2 |
12 files changed, 480 insertions, 474 deletions
diff --git a/net/bootp.c b/net/bootp.c index 9e32476..d0a7da2 100644 --- a/net/bootp.c +++ b/net/bootp.c @@ -19,19 +19,19 @@ #endif #include <linux/compiler.h> -#define BOOTP_VENDOR_MAGIC 0x63825363 /* RFC1048 Magic Cookie */ +#define BOOTP_VENDOR_MAGIC 0x63825363 /* RFC1048 Magic Cookie */ #define TIMEOUT 5000UL /* Milliseconds before trying BOOTP again */ #ifndef CONFIG_NET_RETRY_COUNT -# define TIMEOUT_COUNT 5 /* # of timeouts before giving up */ +# define TIMEOUT_COUNT 5 /* # of timeouts before giving up */ #else # define TIMEOUT_COUNT (CONFIG_NET_RETRY_COUNT) #endif -#define PORT_BOOTPS 67 /* BOOTP server UDP port */ -#define PORT_BOOTPC 68 /* BOOTP client UDP port */ +#define PORT_BOOTPS 67 /* BOOTP server UDP port */ +#define PORT_BOOTPC 68 /* BOOTP client UDP port */ -#ifndef CONFIG_DHCP_MIN_EXT_LEN /* minimal length of extension list */ +#ifndef CONFIG_DHCP_MIN_EXT_LEN /* minimal length of extension list */ #define CONFIG_DHCP_MIN_EXT_LEN 64 #endif @@ -43,8 +43,8 @@ ulong seed1, seed2; #if defined(CONFIG_CMD_DHCP) dhcp_state_t dhcp_state = INIT; -unsigned long dhcp_leasetime = 0; -IPaddr_t NetDHCPServerIP = 0; +unsigned long dhcp_leasetime; +IPaddr_t NetDHCPServerIP; static void DhcpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, unsigned len); @@ -64,37 +64,29 @@ static char *dhcpmsg2str(int type) } } #endif - -#if defined(CONFIG_BOOTP_VENDOREX) -extern u8 *dhcp_vendorex_prep (u8 *e); /*rtn new e after add own opts. */ -extern u8 *dhcp_vendorex_proc (u8 *e); /*rtn next e if mine,else NULL */ -#endif - #endif static int BootpCheckPkt(uchar *pkt, unsigned dest, unsigned src, unsigned len) { - Bootp_t *bp = (Bootp_t *) pkt; + struct Bootp_t *bp = (struct Bootp_t *) pkt; int retval = 0; if (dest != PORT_BOOTPC || src != PORT_BOOTPS) retval = -1; - else if (len < sizeof (Bootp_t) - OPT_SIZE) + else if (len < sizeof(struct Bootp_t) - OPT_SIZE) retval = -2; else if (bp->bp_op != OP_BOOTREQUEST && - bp->bp_op != OP_BOOTREPLY && - bp->bp_op != DHCP_OFFER && - bp->bp_op != DHCP_ACK && - bp->bp_op != DHCP_NAK ) { + bp->bp_op != OP_BOOTREPLY && + bp->bp_op != DHCP_OFFER && + bp->bp_op != DHCP_ACK && + bp->bp_op != DHCP_NAK) retval = -3; - } else if (bp->bp_htype != HWT_ETHER) retval = -4; else if (bp->bp_hlen != HWL_ETHER) retval = -5; - else if (NetReadLong((ulong*)&bp->bp_id) != BootpID) { + else if (NetReadLong((ulong *)&bp->bp_id) != BootpID) retval = -6; - } debug("Filtering pkt = %d\n", retval); @@ -104,7 +96,7 @@ static int BootpCheckPkt(uchar *pkt, unsigned dest, unsigned src, unsigned len) /* * Copy parameters of interest from BOOTP_REPLY/DHCP_OFFER packet */ -static void BootpCopyNetParams(Bootp_t *bp) +static void BootpCopyNetParams(struct Bootp_t *bp) { __maybe_unused IPaddr_t tmp_ip; @@ -113,10 +105,10 @@ static void BootpCopyNetParams(Bootp_t *bp) NetCopyIP(&tmp_ip, &bp->bp_siaddr); if (tmp_ip != 0) NetCopyIP(&NetServerIP, &bp->bp_siaddr); - memcpy (NetServerEther, ((Ethernet_t *)NetRxPacket)->et_src, 6); + memcpy(NetServerEther, ((Ethernet_t *)NetRxPacket)->et_src, 6); #endif if (strlen(bp->bp_file) > 0) - copy_filename (BootFile, bp->bp_file, sizeof(BootFile)); + copy_filename(BootFile, bp->bp_file, sizeof(BootFile)); debug("Bootfile: %s\n", BootFile); @@ -124,97 +116,95 @@ static void BootpCopyNetParams(Bootp_t *bp) * don't delete exising entry when BOOTP / DHCP reply does * not contain a new value */ - if (*BootFile) { - setenv ("bootfile", BootFile); - } + if (*BootFile) + setenv("bootfile", BootFile); } -static int truncate_sz (const char *name, int maxlen, int curlen) +static int truncate_sz(const char *name, int maxlen, int curlen) { if (curlen >= maxlen) { - printf("*** WARNING: %s is too long (%d - max: %d) - truncated\n", - name, curlen, maxlen); + printf("*** WARNING: %s is too long (%d - max: %d)" + " - truncated\n", name, curlen, maxlen); curlen = maxlen - 1; } - return (curlen); + return curlen; } #if !defined(CONFIG_CMD_DHCP) -static void BootpVendorFieldProcess (u8 * ext) +static void BootpVendorFieldProcess(u8 *ext) { int size = *(ext + 1); debug("[BOOTP] Processing extension %d... (%d bytes)\n", *ext, - *(ext + 1)); + *(ext + 1)); NetBootFileSize = 0; switch (*ext) { /* Fixed length fields */ - case 1: /* Subnet mask */ + case 1: /* Subnet mask */ if (NetOurSubnetMask == 0) - NetCopyIP (&NetOurSubnetMask, (IPaddr_t *) (ext + 2)); + NetCopyIP(&NetOurSubnetMask, (IPaddr_t *) (ext + 2)); break; - case 2: /* Time offset - Not yet supported */ + case 2: /* Time offset - Not yet supported */ break; /* Variable length fields */ - case 3: /* Gateways list */ - if (NetOurGatewayIP == 0) { - NetCopyIP (&NetOurGatewayIP, (IPaddr_t *) (ext + 2)); - } + case 3: /* Gateways list */ + if (NetOurGatewayIP == 0) + NetCopyIP(&NetOurGatewayIP, (IPaddr_t *) (ext + 2)); break; - case 4: /* Time server - Not yet supported */ + case 4: /* Time server - Not yet supported */ break; - case 5: /* IEN-116 name server - Not yet supported */ + case 5: /* IEN-116 name server - Not yet supported */ break; case 6: - if (NetOurDNSIP == 0) { - NetCopyIP (&NetOurDNSIP, (IPaddr_t *) (ext + 2)); - } + if (NetOurDNSIP == 0) + NetCopyIP(&NetOurDNSIP, (IPaddr_t *) (ext + 2)); #if defined(CONFIG_BOOTP_DNS2) - if ((NetOurDNS2IP == 0) && (size > 4)) { - NetCopyIP (&NetOurDNS2IP, (IPaddr_t *) (ext + 2 + 4)); - } + if ((NetOurDNS2IP == 0) && (size > 4)) + NetCopyIP(&NetOurDNS2IP, (IPaddr_t *) (ext + 2 + 4)); #endif break; - case 7: /* Log server - Not yet supported */ + case 7: /* Log server - Not yet supported */ break; - case 8: /* Cookie/Quote server - Not yet supported */ + case 8: /* Cookie/Quote server - Not yet supported */ break; - case 9: /* LPR server - Not yet supported */ + case 9: /* LPR server - Not yet supported */ break; - case 10: /* Impress server - Not yet supported */ + case 10: /* Impress server - Not yet supported */ break; - case 11: /* RPL server - Not yet supported */ + case 11: /* RPL server - Not yet supported */ break; - case 12: /* Host name */ + case 12: /* Host name */ if (NetOurHostName[0] == 0) { - size = truncate_sz ("Host Name", sizeof (NetOurHostName), size); - memcpy (&NetOurHostName, ext + 2, size); + size = truncate_sz("Host Name", + sizeof(NetOurHostName), size); + memcpy(&NetOurHostName, ext + 2, size); NetOurHostName[size] = 0; } break; - case 13: /* Boot file size */ + case 13: /* Boot file size */ if (size == 2) - NetBootFileSize = ntohs (*(ushort *) (ext + 2)); + NetBootFileSize = ntohs(*(ushort *) (ext + 2)); else if (size == 4) - NetBootFileSize = ntohl (*(ulong *) (ext + 2)); + NetBootFileSize = ntohl(*(ulong *) (ext + 2)); break; - case 14: /* Merit dump file - Not yet supported */ + case 14: /* Merit dump file - Not yet supported */ break; - case 15: /* Domain name - Not yet supported */ + case 15: /* Domain name - Not yet supported */ break; - case 16: /* Swap server - Not yet supported */ + case 16: /* Swap server - Not yet supported */ break; - case 17: /* Root path */ + case 17: /* Root path */ if (NetOurRootPath[0] == 0) { - size = truncate_sz ("Root Path", sizeof (NetOurRootPath), size); - memcpy (&NetOurRootPath, ext + 2, size); + size = truncate_sz("Root Path", + sizeof(NetOurRootPath), size); + memcpy(&NetOurRootPath, ext + 2, size); NetOurRootPath[size] = 0; } break; - case 18: /* Extension path - Not yet supported */ + case 18: /* Extension path - Not yet supported */ /* * This can be used to send the information of the * vendor area in another file that the client can @@ -222,10 +212,11 @@ static void BootpVendorFieldProcess (u8 * ext) */ break; /* IP host layer fields */ - case 40: /* NIS Domain name */ + case 40: /* NIS Domain name */ if (NetOurNISDomain[0] == 0) { - size = truncate_sz ("NIS Domain Name", sizeof (NetOurNISDomain), size); - memcpy (&NetOurNISDomain, ext + 2, size); + size = truncate_sz("NIS Domain Name", + sizeof(NetOurNISDomain), size); + memcpy(&NetOurNISDomain, ext + 2, size); NetOurNISDomain[size] = 0; } break; @@ -235,7 +226,7 @@ static void BootpVendorFieldProcess (u8 * ext) break; #endif /* Application layer fields */ - case 43: /* Vendor specific info - Not yet supported */ + case 43: /* Vendor specific info - Not yet supported */ /* * Binary information to exchange specific * product information. @@ -245,7 +236,7 @@ static void BootpVendorFieldProcess (u8 * ext) } } -static void BootpVendorProcess (u8 * ext, int size) +static void BootpVendorProcess(u8 *ext, int size) { u8 *end = ext + size; @@ -259,11 +250,11 @@ static void BootpVendorProcess (u8 * ext, int size) ext += ext[1] + 2; if (ext <= end) - BootpVendorFieldProcess (opt); + BootpVendorFieldProcess(opt); } } - debug("[BOOTP] Received fields: \n"); + debug("[BOOTP] Received fields:\n"); if (NetOurSubnetMask) debug("NetOurSubnetMask : %pI4\n", &NetOurSubnetMask); @@ -298,27 +289,28 @@ static void BootpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, unsigned len) { - Bootp_t *bp; + struct Bootp_t *bp; debug("got BOOTP packet (src=%d, dst=%d, len=%d want_len=%zu)\n", - src, dest, len, sizeof (Bootp_t)); + src, dest, len, sizeof(struct Bootp_t)); - bp = (Bootp_t *)pkt; + bp = (struct Bootp_t *)pkt; - if (BootpCheckPkt(pkt, dest, src, len)) /* Filter out pkts we don't want */ + /* Filter out pkts we don't want */ + if (BootpCheckPkt(pkt, dest, src, len)) return; /* * Got a good BOOTP reply. Copy the data into our variables. */ #ifdef CONFIG_STATUS_LED - status_led_set (STATUS_LED_BOOT, STATUS_LED_OFF); + status_led_set(STATUS_LED_BOOT, STATUS_LED_OFF); #endif BootpCopyNetParams(bp); /* Store net parameters from reply */ /* Retrieve extended information (we must parse the vendor area) */ - if (NetReadLong((ulong*)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC)) + if (NetReadLong((ulong *)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC)) BootpVendorProcess((uchar *)&bp->bp_vend[4], len); NetSetTimeout(0, (thand_f *)0); @@ -337,11 +329,11 @@ static void BootpTimeout(void) { if (BootpTry >= TIMEOUT_COUNT) { - puts ("\nRetry count exceeded; starting again\n"); - NetStartAgain (); + puts("\nRetry count exceeded; starting again\n"); + NetStartAgain(); } else { - NetSetTimeout (TIMEOUT, BootpTimeout); - BootpRequest (); + NetSetTimeout(TIMEOUT, BootpTimeout); + BootpRequest(); } } @@ -349,7 +341,8 @@ BootpTimeout(void) * Initialize BOOTP extension fields in the request. */ #if defined(CONFIG_CMD_DHCP) -static int DhcpExtended (u8 * e, int message_type, IPaddr_t ServerID, IPaddr_t RequestedIP) +static int DhcpExtended(u8 *e, int message_type, IPaddr_t ServerID, + IPaddr_t RequestedIP) { u8 *start = e; u8 *cnt; @@ -381,7 +374,7 @@ static int DhcpExtended (u8 * e, int message_type, IPaddr_t ServerID, IPaddr_t R *e++ = (576 - 312 + OPT_SIZE) & 0xff; if (ServerID) { - int tmp = ntohl (ServerID); + int tmp = ntohl(ServerID); *e++ = 54; /* ServerID */ *e++ = 4; @@ -392,7 +385,7 @@ static int DhcpExtended (u8 * e, int message_type, IPaddr_t ServerID, IPaddr_t R } if (RequestedIP) { - int tmp = ntohl (RequestedIP); + int tmp = ntohl(RequestedIP); *e++ = 50; /* Requested IP */ *e++ = 4; @@ -402,12 +395,13 @@ static int DhcpExtended (u8 * e, int message_type, IPaddr_t ServerID, IPaddr_t R *e++ = tmp & 0xff; } #if defined(CONFIG_BOOTP_SEND_HOSTNAME) - if ((hostname = getenv ("hostname"))) { - int hostnamelen = strlen (hostname); + hostname = getenv("hostname"); + if (hostname) { + int hostnamelen = strlen(hostname); *e++ = 12; /* Hostname */ *e++ = hostnamelen; - memcpy (e, hostname, hostnamelen); + memcpy(e, hostname, hostnamelen); e += hostnamelen; } #endif @@ -448,7 +442,8 @@ static int DhcpExtended (u8 * e, int message_type, IPaddr_t ServerID, IPaddr_t R #endif #if defined(CONFIG_BOOTP_VENDOREX) - if ((x = dhcp_vendorex_prep (e))) + x = dhcp_vendorex_prep(e); + if (x) return x - start; #endif @@ -508,9 +503,9 @@ static int DhcpExtended (u8 * e, int message_type, IPaddr_t ServerID, IPaddr_t R #else /* - * Warning: no field size check - change CONFIG_BOOTP_* at your own risk! + * Warning: no field size check - change CONFIG_BOOTP_* at your own risk! */ -static int BootpExtended (u8 * e) +static int BootpExtended(u8 *e) { u8 *start = e; @@ -584,10 +579,10 @@ static int BootpExtended (u8 * e) #endif void -BootpRequest (void) +BootpRequest(void) { - volatile uchar *pkt, *iphdr; - Bootp_t *bp; + uchar *pkt, *iphdr; + struct Bootp_t *bp; int ext_len, pktlen, iplen; bootstage_mark_name(BOOTSTAGE_ID_BOOTP_START, "bootp_start"); @@ -600,22 +595,22 @@ BootpRequest (void) int reg; ulong tst1, tst2, sum, m_mask, m_value = 0; - if (BootpTry ==0) { + if (BootpTry == 0) { /* get our mac */ eth_getenv_enetaddr("ethaddr", bi_enetaddr); debug("BootpRequest => Our Mac: "); - for (reg=0; reg<6; reg++) - debug("%x%c", bi_enetaddr[reg], reg==5 ? '\n' : ':'); + for (reg = 0; reg < 6; reg++) + debug("%x%c", bi_enetaddr[reg], reg == 5 ? '\n' : ':'); /* Mac-Manipulation 2 get seed1 */ - tst1=0; - tst2=0; - for (reg=2; reg<6; reg++) { + tst1 = 0; + tst2 = 0; + for (reg = 2; reg < 6; reg++) { tst1 = tst1 << 8; tst1 = tst1 | bi_enetaddr[reg]; } - for (reg=0; reg<2; reg++) { + for (reg = 0; reg < 2; reg++) { tst2 = tst2 | bi_enetaddr[reg]; tst2 = tst2 << 8; } @@ -623,8 +618,8 @@ BootpRequest (void) seed1 = tst1^tst2; /* Mirror seed1*/ - m_mask=0x1; - for (reg=1;reg<=32;reg++) { + m_mask = 0x1; + for (reg = 1; reg <= 32; reg++) { m_value |= (m_mask & seed1); seed1 = seed1 >> 1; m_value = m_value << 1; @@ -634,44 +629,45 @@ BootpRequest (void) } /* Random Number Generator */ - - for (reg=0;reg<=0;reg++) { + for (reg = 0; reg <= 0; reg++) { sum = seed1 + seed2; if (sum < seed1 || sum < seed2) sum++; seed2 = seed1; seed1 = sum; - if (BootpTry<=2) { /* Start with max 1024 * 1ms */ + if (BootpTry <= 2) { /* Start with max 1024 * 1ms */ sum = sum >> (22-BootpTry); - } else { /*After 3rd BOOTP request max 8192 * 1ms */ + } else { /*After 3rd BOOTP request max 8192 * 1ms */ sum = sum >> 19; } } - printf ("Random delay: %ld ms...\n", sum); - for (reg=0; reg <sum; reg++) { + printf("Random delay: %ld ms...\n", sum); + for (reg = 0; reg < sum; reg++) udelay(1000); /*Wait 1ms*/ - } + #endif /* CONFIG_BOOTP_RANDOM_DELAY */ printf("BOOTP broadcast %d\n", ++BootpTry); pkt = NetTxPacket; - memset ((void*)pkt, 0, PKTSIZE); + memset((void *)pkt, 0, PKTSIZE); pkt += NetSetEther(pkt, NetBcastAddr, PROT_IP); /* - * Next line results in incorrect packet size being transmitted, resulting - * in errors in some DHCP servers, reporting missing bytes. Size must be - * set in packet header after extension length has been determined. + * Next line results in incorrect packet size being transmitted, + * resulting in errors in some DHCP servers, reporting missing bytes. + * Size must be set in packet header after extension length has been + * determined. * C. Hallinan, DS4.COM, Inc. */ - /* NetSetIP(pkt, 0xFFFFFFFFL, PORT_BOOTPS, PORT_BOOTPC, sizeof (Bootp_t)); */ + /* NetSetIP(pkt, 0xFFFFFFFFL, PORT_BOOTPS, PORT_BOOTPC, + sizeof (struct Bootp_t)); */ iphdr = pkt; /* We need this later for NetSetIP() */ pkt += IP_HDR_SIZE; - bp = (Bootp_t *)pkt; + bp = (struct Bootp_t *)pkt; bp->bp_op = OP_BOOTREQUEST; bp->bp_htype = HWT_ETHER; bp->bp_hlen = HWL_ETHER; @@ -681,8 +677,8 @@ BootpRequest (void) NetWriteIP(&bp->bp_yiaddr, 0); NetWriteIP(&bp->bp_siaddr, 0); NetWriteIP(&bp->bp_giaddr, 0); - memcpy (bp->bp_chaddr, NetOurEther, 6); - copy_filename (bp->bp_file, BootFile, sizeof(bp->bp_file)); + memcpy(bp->bp_chaddr, NetOurEther, 6); + copy_filename(bp->bp_file, BootFile, sizeof(bp->bp_file)); /* Request additional information from the BOOTP/DHCP server */ #if defined(CONFIG_CMD_DHCP) @@ -707,7 +703,8 @@ BootpRequest (void) * Calculate proper packet lengths taking into account the * variable size of the options field */ - pktlen = ((int)(pkt-NetTxPacket)) + BOOTP_HDR_SIZE - sizeof(bp->bp_vend) + ext_len; + pktlen = ((int)(pkt-NetTxPacket)) + BOOTP_HDR_SIZE - + sizeof(bp->bp_vend) + ext_len; iplen = BOOTP_HDR_SIZE - sizeof(bp->bp_vend) + ext_len; NetSetIP(iphdr, 0xFFFFFFFFL, PORT_BOOTPS, PORT_BOOTPC, iplen); NetSetTimeout(SELECT_TIMEOUT, BootpTimeout); @@ -722,7 +719,7 @@ BootpRequest (void) } #if defined(CONFIG_CMD_DHCP) -static void DhcpOptionsProcess (uchar * popt, Bootp_t *bp) +static void DhcpOptionsProcess(uchar *popt, struct Bootp_t *bp) { uchar *end = popt + BOOTP_HDR_SIZE; int oplen, size; @@ -734,50 +731,51 @@ static void DhcpOptionsProcess (uchar * popt, Bootp_t *bp) oplen = *(popt + 1); switch (*popt) { case 1: - NetCopyIP (&NetOurSubnetMask, (popt + 2)); + NetCopyIP(&NetOurSubnetMask, (popt + 2)); break; #if defined(CONFIG_CMD_SNTP) && defined(CONFIG_BOOTP_TIMEOFFSET) case 2: /* Time offset */ to_ptr = &NetTimeOffset; - NetCopyLong ((ulong *)to_ptr, (ulong *)(popt + 2)); - NetTimeOffset = ntohl (NetTimeOffset); + NetCopyLong((ulong *)to_ptr, (ulong *)(popt + 2)); + NetTimeOffset = ntohl(NetTimeOffset); break; #endif case 3: - NetCopyIP (&NetOurGatewayIP, (popt + 2)); + NetCopyIP(&NetOurGatewayIP, (popt + 2)); break; case 6: - NetCopyIP (&NetOurDNSIP, (popt + 2)); + NetCopyIP(&NetOurDNSIP, (popt + 2)); #if defined(CONFIG_BOOTP_DNS2) - if (*(popt + 1) > 4) { - NetCopyIP (&NetOurDNS2IP, (popt + 2 + 4)); - } + if (*(popt + 1) > 4) + NetCopyIP(&NetOurDNS2IP, (popt + 2 + 4)); #endif break; case 12: - size = truncate_sz ("Host Name", sizeof (NetOurHostName), oplen); - memcpy (&NetOurHostName, popt + 2, size); + size = truncate_sz("Host Name", + sizeof(NetOurHostName), oplen); + memcpy(&NetOurHostName, popt + 2, size); NetOurHostName[size] = 0; break; case 15: /* Ignore Domain Name Option */ break; case 17: - size = truncate_sz ("Root Path", sizeof (NetOurRootPath), oplen); - memcpy (&NetOurRootPath, popt + 2, size); + size = truncate_sz("Root Path", + sizeof(NetOurRootPath), oplen); + memcpy(&NetOurRootPath, popt + 2, size); NetOurRootPath[size] = 0; break; #if defined(CONFIG_CMD_SNTP) && defined(CONFIG_BOOTP_NTPSERVER) case 42: /* NTP server IP */ - NetCopyIP (&NetNtpServerIP, (popt + 2)); + NetCopyIP(&NetNtpServerIP, (popt + 2)); break; #endif case 51: - NetCopyLong (&dhcp_leasetime, (ulong *) (popt + 2)); + NetCopyLong(&dhcp_leasetime, (ulong *) (popt + 2)); break; case 53: /* Ignore Message Type Option */ break; case 54: - NetCopyIP (&NetDHCPServerIP, (popt + 2)); + NetCopyIP(&NetDHCPServerIP, (popt + 2)); break; case 58: /* Ignore Renewal Time Option */ break; @@ -792,7 +790,7 @@ static void DhcpOptionsProcess (uchar * popt, Bootp_t *bp) * pass the bootp packet pointer into here as the * second arg */ - size = truncate_sz ("Opt Boot File", + size = truncate_sz("Opt Boot File", sizeof(bp->bp_file), oplen); if (bp->bp_file[0] == '\0' && size > 0) { @@ -813,10 +811,11 @@ static void DhcpOptionsProcess (uchar * popt, Bootp_t *bp) break; default: #if defined(CONFIG_BOOTP_VENDOREX) - if (dhcp_vendorex_proc (popt)) + if (dhcp_vendorex_proc(popt)) break; #endif - printf ("*** Unhandled DHCP Option in OFFER/ACK: %d\n", *popt); + printf("*** Unhandled DHCP Option in OFFER/ACK:" + " %d\n", *popt); break; } popt += oplen + 2; /* Process next option */ @@ -825,42 +824,42 @@ static void DhcpOptionsProcess (uchar * popt, Bootp_t *bp) static int DhcpMessageType(unsigned char *popt) { - if (NetReadLong((ulong*)popt) != htonl(BOOTP_VENDOR_MAGIC)) + if (NetReadLong((ulong *)popt) != htonl(BOOTP_VENDOR_MAGIC)) return -1; popt += 4; - while ( *popt != 0xff ) { - if ( *popt == 53 ) /* DHCP Message Type */ + while (*popt != 0xff) { + if (*popt == 53) /* DHCP Message Type */ return *(popt + 2); popt += *(popt + 1) + 2; /* Scan through all options */ } return -1; } -static void DhcpSendRequestPkt(Bootp_t *bp_offer) +static void DhcpSendRequestPkt(struct Bootp_t *bp_offer) { - volatile uchar *pkt, *iphdr; - Bootp_t *bp; + uchar *pkt, *iphdr; + struct Bootp_t *bp; int pktlen, iplen, extlen; IPaddr_t OfferedIP; debug("DhcpSendRequestPkt: Sending DHCPREQUEST\n"); pkt = NetTxPacket; - memset ((void*)pkt, 0, PKTSIZE); + memset((void *)pkt, 0, PKTSIZE); pkt += NetSetEther(pkt, NetBcastAddr, PROT_IP); - iphdr = pkt; /* We'll need this later to set proper pkt size */ + iphdr = pkt; /* We'll need this later to set proper pkt size */ pkt += IP_HDR_SIZE; - bp = (Bootp_t *)pkt; + bp = (struct Bootp_t *)pkt; bp->bp_op = OP_BOOTREQUEST; bp->bp_htype = HWT_ETHER; bp->bp_hlen = HWL_ETHER; bp->bp_hops = 0; bp->bp_secs = htons(get_timer(0) / 1000); - /* Do not set the client IP, your IP, or server IP yet, since it hasn't been ACK'ed by - * the server yet */ + /* Do not set the client IP, your IP, or server IP yet, since it + * hasn't been ACK'ed by the server yet */ /* * RFC3046 requires Relay Agents to discard packets with @@ -868,7 +867,7 @@ static void DhcpSendRequestPkt(Bootp_t *bp_offer) */ NetWriteIP(&bp->bp_giaddr, 0); - memcpy (bp->bp_chaddr, NetOurEther, 6); + memcpy(bp->bp_chaddr, NetOurEther, 6); /* * ID is the id of the OFFER packet @@ -882,9 +881,11 @@ static void DhcpSendRequestPkt(Bootp_t *bp_offer) /* Copy offered IP into the parameters request list */ NetCopyIP(&OfferedIP, &bp_offer->bp_yiaddr); - extlen = DhcpExtended((u8 *)bp->bp_vend, DHCP_REQUEST, NetDHCPServerIP, OfferedIP); + extlen = DhcpExtended((u8 *)bp->bp_vend, DHCP_REQUEST, + NetDHCPServerIP, OfferedIP); - pktlen = ((int)(pkt-NetTxPacket)) + BOOTP_HDR_SIZE - sizeof(bp->bp_vend) + extlen; + pktlen = ((int)(pkt-NetTxPacket)) + BOOTP_HDR_SIZE - + sizeof(bp->bp_vend) + extlen; iplen = BOOTP_HDR_SIZE - sizeof(bp->bp_vend) + extlen; NetSetIP(iphdr, 0xFFFFFFFFL, PORT_BOOTPS, PORT_BOOTPC, iplen); @@ -902,36 +903,38 @@ static void DhcpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, unsigned len) { - Bootp_t *bp = (Bootp_t *)pkt; + struct Bootp_t *bp = (struct Bootp_t *)pkt; debug("DHCPHandler: got packet: (src=%d, dst=%d, len=%d) state: %d\n", src, dest, len, dhcp_state); - if (BootpCheckPkt(pkt, dest, src, len)) /* Filter out pkts we don't want */ + /* Filter out pkts we don't want */ + if (BootpCheckPkt(pkt, dest, src, len)) return; - debug("DHCPHandler: got DHCP packet: (src=%d, dst=%d, len=%d) state: %d\n", - src, dest, len, dhcp_state); + debug("DHCPHandler: got DHCP packet: (src=%d, dst=%d, len=%d) state:" + " %d\n", src, dest, len, dhcp_state); switch (dhcp_state) { case SELECTING: /* * Wait an appropriate time for any potential DHCPOFFER packets - * to arrive. Then select one, and generate DHCPREQUEST response. - * If filename is in format we recognize, assume it is a valid - * OFFER from a server we want. + * to arrive. Then select one, and generate DHCPREQUEST + * response. If filename is in format we recognize, assume it + * is a valid OFFER from a server we want. */ debug("DHCP: state=SELECTING bp_file: \"%s\"\n", bp->bp_file); #ifdef CONFIG_SYS_BOOTFILE_PREFIX if (strncmp(bp->bp_file, CONFIG_SYS_BOOTFILE_PREFIX, - strlen(CONFIG_SYS_BOOTFILE_PREFIX)) == 0 ) { + strlen(CONFIG_SYS_BOOTFILE_PREFIX)) == 0) { #endif /* CONFIG_SYS_BOOTFILE_PREFIX */ debug("TRANSITIONING TO REQUESTING STATE\n"); dhcp_state = REQUESTING; - if (NetReadLong((ulong*)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC)) + if (NetReadLong((ulong *)&bp->bp_vend[0]) == + htonl(BOOTP_VENDOR_MAGIC)) DhcpOptionsProcess((u8 *)&bp->bp_vend[4], bp); NetSetTimeout(TIMEOUT, BootpTimeout); @@ -945,14 +948,17 @@ DhcpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, case REQUESTING: debug("DHCP State: REQUESTING\n"); - if ( DhcpMessageType((u8 *)bp->bp_vend) == DHCP_ACK ) { - if (NetReadLong((ulong*)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC)) + if (DhcpMessageType((u8 *)bp->bp_vend) == DHCP_ACK) { + if (NetReadLong((ulong *)&bp->bp_vend[0]) == + htonl(BOOTP_VENDOR_MAGIC)) DhcpOptionsProcess((u8 *)&bp->bp_vend[4], bp); - BootpCopyNetParams(bp); /* Store net params from reply */ + /* Store net params from reply */ + BootpCopyNetParams(bp); dhcp_state = BOUND; - printf ("DHCP client bound to address %pI4\n", &NetOurIP); + printf("DHCP client bound to address %pI4\n", + &NetOurIP); bootstage_mark_name(BOOTSTAGE_ID_BOOTP_STOP, - "bootp_stop"); + "bootp_stop"); net_auto_load(); return; @@ -962,7 +968,7 @@ DhcpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, /* DHCP client bound to address */ break; default: - puts ("DHCP: INVALID STATE\n"); + puts("DHCP: INVALID STATE\n"); break; } diff --git a/net/bootp.h b/net/bootp.h index 50625ab..ce73734 100644 --- a/net/bootp.h +++ b/net/bootp.h @@ -10,7 +10,7 @@ #define __BOOTP_H__ #ifndef __NET_H__ -#include <net.h> +#include <net.h> #endif /* __NET_H__ */ /**********************************************************************/ @@ -19,35 +19,39 @@ * BOOTP header. */ #if defined(CONFIG_CMD_DHCP) -#define OPT_SIZE 312 /* Minimum DHCP Options size per RFC2131 - results in 576 byte pkt */ +/* Minimum DHCP Options size per RFC2131 - results in 576 byte pkt */ +#define OPT_SIZE 312 +#if defined(CONFIG_BOOTP_VENDOREX) +extern u8 *dhcp_vendorex_prep(u8 *e); /*rtn new e after add own opts. */ +extern u8 *dhcp_vendorex_proc(u8 *e); /*rtn next e if mine,else NULL */ +#endif #else #define OPT_SIZE 64 #endif -typedef struct -{ - uchar bp_op; /* Operation */ +struct Bootp_t { + uchar bp_op; /* Operation */ # define OP_BOOTREQUEST 1 # define OP_BOOTREPLY 2 - uchar bp_htype; /* Hardware type */ + uchar bp_htype; /* Hardware type */ # define HWT_ETHER 1 - uchar bp_hlen; /* Hardware address length */ + uchar bp_hlen; /* Hardware address length */ # define HWL_ETHER 6 - uchar bp_hops; /* Hop count (gateway thing) */ - ulong bp_id; /* Transaction ID */ - ushort bp_secs; /* Seconds since boot */ - ushort bp_spare1; /* Alignment */ - IPaddr_t bp_ciaddr; /* Client IP address */ - IPaddr_t bp_yiaddr; /* Your (client) IP address */ - IPaddr_t bp_siaddr; /* Server IP address */ - IPaddr_t bp_giaddr; /* Gateway IP address */ - uchar bp_chaddr[16]; /* Client hardware address */ - char bp_sname[64]; /* Server host name */ - char bp_file[128]; /* Boot file name */ - char bp_vend[OPT_SIZE]; /* Vendor information */ -} Bootp_t; - -#define BOOTP_HDR_SIZE sizeof (Bootp_t) + uchar bp_hops; /* Hop count (gateway thing) */ + ulong bp_id; /* Transaction ID */ + ushort bp_secs; /* Seconds since boot */ + ushort bp_spare1; /* Alignment */ + IPaddr_t bp_ciaddr; /* Client IP address */ + IPaddr_t bp_yiaddr; /* Your (client) IP address */ + IPaddr_t bp_siaddr; /* Server IP address */ + IPaddr_t bp_giaddr; /* Gateway IP address */ + uchar bp_chaddr[16]; /* Client hardware address */ + char bp_sname[64]; /* Server host name */ + char bp_file[128]; /* Boot file name */ + char bp_vend[OPT_SIZE]; /* Vendor information */ +}; + +#define BOOTP_HDR_SIZE sizeof(struct Bootp_t) #define BOOTP_SIZE (ETHER_HDR_SIZE + IP_HDR_SIZE + BOOTP_HDR_SIZE) /**********************************************************************/ @@ -56,16 +60,16 @@ typedef struct */ /* bootp.c */ -extern ulong BootpID; /* ID of cur BOOTP request */ -extern char BootFile[128]; /* Boot file name */ +extern ulong BootpID; /* ID of cur BOOTP request */ +extern char BootFile[128]; /* Boot file name */ extern int BootpTry; #ifdef CONFIG_BOOTP_RANDOM_DELAY -extern ulong seed1, seed2; /* seed for random BOOTP delay */ +extern ulong seed1, seed2; /* seed for random BOOTP delay */ #endif /* Send a BOOTP request */ -extern void BootpRequest (void); +extern void BootpRequest(void); /****************** DHCP Support *********************/ extern void DhcpRequest(void); @@ -82,14 +82,12 @@ int cpu_eth_init(bd_t *bis) __attribute__((weak, alias("__def_eth_init"))); int board_eth_init(bd_t *bis) __attribute__((weak, alias("__def_eth_init"))); #ifdef CONFIG_API -extern void (*push_packet)(volatile void *, int); - static struct { uchar data[PKTSIZE]; int length; } eth_rcv_bufs[PKTBUFSRX]; -static unsigned int eth_rcv_current = 0, eth_rcv_last = 0; +static unsigned int eth_rcv_current, eth_rcv_last; #endif static struct eth_device *eth_devices, *eth_current; @@ -141,11 +139,10 @@ struct eth_device *eth_get_dev_by_index(int index) return target_dev; } -int eth_get_dev_index (void) +int eth_get_dev_index(void) { - if (!eth_current) { + if (!eth_current) return -1; - } return eth_current->index; } @@ -176,7 +173,7 @@ int eth_write_hwaddr(struct eth_device *dev, const char *base_name, if (memcmp(env_enetaddr, "\0\0\0\0\0\0", 6)) { if (memcmp(dev->enetaddr, "\0\0\0\0\0\0", 6) && - memcmp(dev->enetaddr, env_enetaddr, 6)) { + memcmp(dev->enetaddr, env_enetaddr, 6)) { printf("\nWarning: %s MAC addresses don't match:\n", dev->name); printf("Address in SROM is %pM\n", @@ -189,10 +186,9 @@ int eth_write_hwaddr(struct eth_device *dev, const char *base_name, } if (dev->write_hwaddr && - !eth_mac_skip(eth_number) && - is_valid_ether_addr(dev->enetaddr)) { + !eth_mac_skip(eth_number) && + is_valid_ether_addr(dev->enetaddr)) ret = dev->write_hwaddr(dev); - } return ret; } @@ -200,7 +196,7 @@ int eth_write_hwaddr(struct eth_device *dev, const char *base_name, int eth_register(struct eth_device *dev) { struct eth_device *d; - static int index = 0; + static int index; assert(strlen(dev->name) < sizeof(dev->name)); @@ -208,7 +204,7 @@ int eth_register(struct eth_device *dev) eth_current = eth_devices = dev; eth_current_changed(); } else { - for (d=eth_devices; d->next!=eth_devices; d=d->next) + for (d = eth_devices; d->next != eth_devices; d = d->next) ; d->next = dev; } @@ -249,6 +245,14 @@ int eth_unregister(struct eth_device *dev) return 0; } +static void eth_env_init(bd_t *bis) +{ + const char *s; + + if ((s = getenv("bootfile")) != NULL) + copy_filename(BootFile, s, sizeof(BootFile)); +} + int eth_initialize(bd_t *bis) { int num_devices = 0; @@ -264,6 +268,8 @@ int eth_initialize(bd_t *bis) phy_init(); #endif + eth_env_init(bis); + /* * If board-specific initialization exists, call it. * If not, call a CPU-specific one @@ -278,36 +284,37 @@ int eth_initialize(bd_t *bis) printf("Net Initialization Skipped\n"); if (!eth_devices) { - puts ("No ethernet found.\n"); + puts("No ethernet found.\n"); bootstage_error(BOOTSTAGE_ID_NET_ETH_START); } else { struct eth_device *dev = eth_devices; - char *ethprime = getenv ("ethprime"); + char *ethprime = getenv("ethprime"); bootstage_mark(BOOTSTAGE_ID_NET_ETH_INIT); do { if (dev->index) - puts (", "); + puts(", "); printf("%s", dev->name); - if (ethprime && strcmp (dev->name, ethprime) == 0) { + if (ethprime && strcmp(dev->name, ethprime) == 0) { eth_current = dev; - puts (" [PRIME]"); + puts(" [PRIME]"); } if (strchr(dev->name, ' ')) - puts("\nWarning: eth device name has a space!\n"); + puts("\nWarning: eth device name has a space!" + "\n"); if (eth_write_hwaddr(dev, "eth", dev->index)) puts("\nWarning: failed to set MAC address\n"); dev = dev->next; num_devices++; - } while(dev != eth_devices); + } while (dev != eth_devices); eth_current_changed(); - putc ('\n'); + putc('\n'); } return num_devices; @@ -318,9 +325,9 @@ int eth_initialize(bd_t *bis) * mcast_addr: multicast ipaddr from which multicast Mac is made * join: 1=join, 0=leave. */ -int eth_mcast_join( IPaddr_t mcast_ip, u8 join) +int eth_mcast_join(IPaddr_t mcast_ip, u8 join) { - u8 mcast_mac[6]; + u8 mcast_mac[6]; if (!eth_current || !eth_current->mcast) return -1; mcast_mac[5] = htonl(mcast_ip) & 0xff; @@ -337,7 +344,7 @@ int eth_mcast_join( IPaddr_t mcast_ip, u8 join) * some other adapter -- hash tables */ #define CRCPOLY_LE 0xedb88320 -u32 ether_crc (size_t len, unsigned char const *p) +u32 ether_crc(size_t len, unsigned char const *p) { int i; u32 crc; @@ -364,7 +371,7 @@ int eth_init(bd_t *bis) struct eth_device *old_current, *dev; if (!eth_current) { - puts ("No ethernet found.\n"); + puts("No ethernet found.\n"); return -1; } @@ -384,7 +391,7 @@ int eth_init(bd_t *bis) do { debug("Trying %s\n", eth_current->name); - if (eth_current->init(eth_current,bis) >= 0) { + if (eth_current->init(eth_current, bis) >= 0) { eth_current->state = ETH_STATE_ACTIVE; return 0; @@ -407,7 +414,7 @@ void eth_halt(void) eth_current->state = ETH_STATE_PASSIVE; } -int eth_send(volatile void *packet, int length) +int eth_send(void *packet, int length) { if (!eth_current) return -1; @@ -424,9 +431,9 @@ int eth_rx(void) } #ifdef CONFIG_API -static void eth_save_packet(volatile void *packet, int length) +static void eth_save_packet(void *packet, int length) { - volatile char *p = packet; + char *p = packet; int i; if ((eth_rcv_last+1) % PKTBUFSRX == eth_rcv_current) @@ -442,9 +449,9 @@ static void eth_save_packet(volatile void *packet, int length) eth_rcv_last = (eth_rcv_last + 1) % PKTBUFSRX; } -int eth_receive(volatile void *packet, int length) +int eth_receive(void *packet, int length) { - volatile char *p = packet; + char *p = packet; void *pp = push_packet; int i; @@ -472,38 +479,36 @@ int eth_receive(volatile void *packet, int length) void eth_try_another(int first_restart) { - static struct eth_device *first_failed = NULL; + static struct eth_device *first_failed; char *ethrotate; /* * Do not rotate between network interfaces when * 'ethrotate' variable is set to 'no'. */ - if (((ethrotate = getenv ("ethrotate")) != NULL) && - (strcmp(ethrotate, "no") == 0)) + ethrotate = getenv("ethrotate"); + if ((ethrotate != NULL) && (strcmp(ethrotate, "no") == 0)) return; if (!eth_current) return; - if (first_restart) { + if (first_restart) first_failed = eth_current; - } eth_current = eth_current->next; eth_current_changed(); - if (first_failed == eth_current) { + if (first_failed == eth_current) NetRestartWrap = 1; - } } void eth_set_current(void) { - static char *act = NULL; - static int env_changed_id = 0; - struct eth_device* old_current; + static char *act; + static int env_changed_id; + struct eth_device *old_current; int env_id; if (!eth_current) /* XXX no current */ @@ -526,7 +531,7 @@ void eth_set_current(void) eth_current_changed(); } -char *eth_get_name (void) +char *eth_get_name(void) { - return (eth_current ? eth_current->name : "unknown"); + return eth_current ? eth_current->name : "unknown"; } @@ -77,6 +77,7 @@ #include <common.h> #include <watchdog.h> #include <command.h> +#include <linux/compiler.h> #include <net.h> #include "bootp.h" #include "tftp.h" @@ -152,7 +153,7 @@ IPaddr_t NetOurIP; /* Server IP addr (0 = unknown) */ IPaddr_t NetServerIP; /* Current receive packet */ -volatile uchar *NetRxPacket; +uchar *NetRxPacket; /* Current rx packet length */ int NetRxPacketLen; /* IP packet ID */ @@ -161,7 +162,7 @@ unsigned NetIPID; uchar NetBcastAddr[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; uchar NetEtherNullAddr[6]; #ifdef CONFIG_API -void (*push_packet)(volatile void *, int len) = 0; +void (*push_packet)(void *, int len) = 0; #endif #if defined(CONFIG_CMD_CDP) /* Ethernet bcast address */ @@ -203,15 +204,10 @@ IPaddr_t NetNtpServerIP; int NetTimeOffset; #endif -#ifdef CONFIG_NETCONSOLE -void NcStart(void); -int nc_input_packet(uchar *pkt, unsigned dest, unsigned src, unsigned len); -#endif - -volatile uchar PktBuf[(PKTBUFSRX+1) * PKTSIZE_ALIGN + PKTALIGN]; +uchar PktBuf[(PKTBUFSRX+1) * PKTSIZE_ALIGN + PKTALIGN]; /* Receive packet */ -volatile uchar *NetRxPackets[PKTBUFSRX]; +uchar *NetRxPackets[PKTBUFSRX]; /* Current RX packet handler */ static rxhand_f *packetHandler; @@ -225,7 +221,7 @@ static ulong timeStart; /* Current timeout value */ static ulong timeDelta; /* THE transmit packet */ -volatile uchar *NetTxPacket; +uchar *NetTxPacket; static int net_check_prereq(enum proto_t protocol); @@ -246,7 +242,7 @@ int NetArpWaitTry; void ArpRequest(void) { - volatile uchar *pkt; + uchar *pkt; ARP_t *arp; debug("ARP broadcast %d\n", NetArpWaitTry); @@ -342,13 +338,11 @@ void net_auto_load(void) static void NetInitLoop(enum proto_t protocol) { static int env_changed_id; - bd_t *bd = gd->bd; int env_id = get_env_id(); /* update only when the environment has changed */ if (env_changed_id != env_id) { NetOurIP = getenv_IPaddr("ipaddr"); - NetCopyIP(&bd->bi_ip_addr, &NetOurIP); NetOurGatewayIP = getenv_IPaddr("gatewayip"); NetOurSubnetMask = getenv_IPaddr("netmask"); NetServerIP = getenv_IPaddr("serverip"); @@ -527,10 +521,7 @@ restart: for (;;) { WATCHDOG_RESET(); #ifdef CONFIG_SHOW_ACTIVITY - { - extern void show_activity(int arg); - show_activity(1); - } + show_activity(1); #endif /* * Check the ethernet for a new packet. The ethernet @@ -705,7 +696,7 @@ NetSetTimeout(ulong iv, thand_f *f) void -NetSendPacket(volatile uchar *pkt, int len) +NetSendPacket(uchar *pkt, int len) { (void) eth_send(pkt, len); } @@ -768,8 +759,8 @@ static ushort PingSeqNo; int PingSend(void) { static uchar mac[6]; - volatile IP_t *ip; - volatile ushort *s; + IP_t *ip; + ushort *s; uchar *pkt; /* XXX always send arp request */ @@ -784,7 +775,7 @@ int PingSend(void) pkt = NetArpWaitTxPacket; pkt += NetSetEther(pkt, mac, PROT_IP); - ip = (volatile IP_t *)pkt; + ip = (IP_t *)pkt; /* * Construct an IP and ICMP header. @@ -936,9 +927,9 @@ static ushort CDP_compute_csum(const uchar *buff, ushort len) int CDPSendTrigger(void) { - volatile uchar *pkt; - volatile ushort *s; - volatile ushort *cp; + uchar *pkt; + ushort *s; + ushort *cp; Ethernet_t *et; int len; ushort chksum; @@ -965,7 +956,7 @@ int CDPSendTrigger(void) /* CDP header */ *pkt++ = 0x02; /* CDP version 2 */ *pkt++ = 180; /* TTL */ - s = (volatile ushort *)pkt; + s = (ushort *)pkt; cp = s; /* checksum (0 for later calculation) */ *s++ = htons(0); @@ -1103,8 +1094,8 @@ CDPHandler(const uchar *pkt, unsigned len) * output a warning */ if (pkt[0] != 0x02) - printf("** WARNING: CDP packet received with a protocol version %d > 2\n", - pkt[0] & 0xff); + printf("**WARNING: CDP packet received with a protocol version " + "%d > 2\n", pkt[0] & 0xff); if (CDP_compute_csum(pkt, len) != 0) return; @@ -1239,7 +1230,7 @@ struct hole { static IP_t *__NetDefragment(IP_t *ip, int *lenp) { - static uchar pkt_buff[IP_PKTSIZE] __attribute__((aligned(PKTALIGN))); + 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; @@ -1439,7 +1430,7 @@ static void receive_icmp(IP_t *ip, int len, IPaddr_t src_ip, Ethernet_t *et) } void -NetReceive(volatile uchar *inpkt, int len) +NetReceive(uchar *inpkt, int len) { Ethernet_t *et; IP_t *ip; @@ -1611,6 +1602,7 @@ NetReceive(volatile uchar *inpkt, int len) /* matched waiting packet's address */ if (tmp == NetArpWaitReplyIP) { debug("Got it\n"); + /* save address for later use */ memcpy(NetArpWaitPacketMAC, &arp->ar_data[0], 6); @@ -1619,7 +1611,8 @@ NetReceive(volatile uchar *inpkt, int len) (*packetHandler)(0, 0, 0, 0, 0); #endif /* modify header, and transmit it */ - memcpy(((Ethernet_t *)NetArpWaitTxPacket)->et_dest, NetArpWaitPacketMAC, 6); + memcpy(((Ethernet_t *)NetArpWaitTxPacket)-> + et_dest, NetArpWaitPacketMAC, 6); (void) eth_send(NetArpWaitTxPacket, NetArpWaitTxPacketSize); @@ -1856,7 +1849,6 @@ common: case CDP: case DHCP: if (memcmp(NetOurEther, "\0\0\0\0\0\0", 6) == 0) { - extern int eth_get_dev_index(void); int num = eth_get_dev_index(); switch (num) { @@ -1918,7 +1910,7 @@ NetEthHdrSize(void) } int -NetSetEther(volatile uchar *xet, uchar * addr, uint prot) +NetSetEther(uchar *xet, uchar * addr, uint prot) { Ethernet_t *et = (Ethernet_t *)xet; ushort myvlanid; @@ -1943,7 +1935,7 @@ NetSetEther(volatile uchar *xet, uchar * addr, uint prot) } void -NetSetIP(volatile uchar *xip, IPaddr_t dest, int dport, int sport, int len) +NetSetIP(uchar *xip, IPaddr_t dest, int dport, int sport, int len) { IP_t *ip = (IP_t *)xip; @@ -33,8 +33,8 @@ #define NFS_RETRY_COUNT 30 #define NFS_TIMEOUT 2000UL -static int fs_mounted = 0; -static unsigned long rpc_id = 0; +static int fs_mounted; +static unsigned long rpc_id; static int nfs_offset = -1; static int nfs_len; @@ -61,14 +61,14 @@ static char *nfs_filename; static char *nfs_path; static char nfs_path_buff[2048]; -static __inline__ int -store_block (uchar * src, unsigned offset, unsigned len) +static inline int +store_block(uchar *src, unsigned offset, unsigned len) { ulong newsize = offset + len; #ifdef CONFIG_SYS_DIRECT_FLASH_NFS int i, rc = 0; - for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; i++) { + for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) { /* start address in flash? */ if (load_addr + offset >= flash_info[i].start[0]) { rc = 1; @@ -77,15 +77,15 @@ store_block (uchar * src, unsigned offset, unsigned len) } if (rc) { /* Flash is destination for this packet */ - rc = flash_write ((uchar *)src, (ulong)(load_addr+offset), len); + rc = flash_write((uchar *)src, (ulong)(load_addr+offset), len); if (rc) { - flash_perror (rc); + flash_perror(rc); return -1; } } else #endif /* CONFIG_SYS_DIRECT_FLASH_NFS */ { - (void)memcpy ((void *)(load_addr + offset), src, len); + (void)memcpy((void *)(load_addr + offset), src, len); } if (NetBootFileXferSize < (offset+len)) @@ -94,7 +94,7 @@ store_block (uchar * src, unsigned offset, unsigned len) } static char* -basename (char *path) +basename(char *path) { char *fname; @@ -110,11 +110,11 @@ basename (char *path) } static char* -dirname (char *path) +dirname(char *path) { char *fname; - fname = basename (path); + fname = basename(path); --fname; *fname = '\0'; return path; @@ -123,14 +123,14 @@ dirname (char *path) /************************************************************************** RPC_ADD_CREDENTIALS - Add RPC authentication/verifier entries **************************************************************************/ -static long *rpc_add_credentials (long *p) +static long *rpc_add_credentials(long *p) { int hl; int hostnamelen; char hostname[256]; - strcpy (hostname, ""); - hostnamelen=strlen (hostname); + strcpy(hostname, ""); + hostnamelen = strlen(hostname); /* Here's the executive summary on authentication requirements of the * various NFS server implementations: Linux accepts both AUTH_NONE @@ -148,10 +148,9 @@ static long *rpc_add_credentials (long *p) *p++ = htonl(hl+20); /* auth length */ *p++ = htonl(0); /* stamp */ *p++ = htonl(hostnamelen); /* hostname string */ - if (hostnamelen & 3) { + if (hostnamelen & 3) *(p + hostnamelen / 4) = 0; /* add zero padding */ - } - memcpy (p, hostname, hostnamelen); + memcpy(p, hostname, hostnamelen); p += hl / 4; *p++ = 0; /* uid */ *p++ = 0; /* gid */ @@ -168,7 +167,7 @@ static long *rpc_add_credentials (long *p) RPC_LOOKUP - Lookup RPC Port numbers **************************************************************************/ static void -rpc_req (int rpc_prog, int rpc_proc, uint32_t *data, int datalen) +rpc_req(int rpc_prog, int rpc_proc, uint32_t *data, int datalen) { struct rpc_t pkt; unsigned long id; @@ -186,11 +185,12 @@ rpc_req (int rpc_prog, int rpc_proc, uint32_t *data, int datalen) p = (uint32_t *)&(pkt.u.call.data); if (datalen) - memcpy ((char *)p, (char *)data, datalen*sizeof(uint32_t)); + memcpy((char *)p, (char *)data, datalen*sizeof(uint32_t)); pktlen = (char *)p + datalen*sizeof(uint32_t) - (char *)&pkt; - memcpy ((char *)NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE, (char *)&pkt, pktlen); + memcpy((char *)NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE, + (char *)&pkt, pktlen); if (rpc_prog == PROG_PORTMAP) sport = SUNRPC_PORT; @@ -199,14 +199,15 @@ rpc_req (int rpc_prog, int rpc_proc, uint32_t *data, int datalen) else sport = NfsSrvNfsPort; - NetSendUDPPacket (NetServerEther, NfsServerIP, sport, NfsOurPort, pktlen); + NetSendUDPPacket(NetServerEther, NfsServerIP, sport, NfsOurPort, + pktlen); } /************************************************************************** RPC_LOOKUP - Lookup RPC Port numbers **************************************************************************/ static void -rpc_lookup_req (int prog, int ver) +rpc_lookup_req(int prog, int ver) { uint32_t data[16]; @@ -217,56 +218,56 @@ rpc_lookup_req (int prog, int ver) data[6] = htonl(17); /* IP_UDP */ data[7] = 0; - rpc_req (PROG_PORTMAP, PORTMAP_GETPORT, data, 8); + rpc_req(PROG_PORTMAP, PORTMAP_GETPORT, data, 8); } /************************************************************************** NFS_MOUNT - Mount an NFS Filesystem **************************************************************************/ static void -nfs_mount_req (char *path) +nfs_mount_req(char *path) { uint32_t data[1024]; uint32_t *p; int len; int pathlen; - pathlen = strlen (path); + pathlen = strlen(path); p = &(data[0]); p = (uint32_t *)rpc_add_credentials((long *)p); *p++ = htonl(pathlen); - if (pathlen & 3) *(p + pathlen / 4) = 0; - memcpy (p, path, pathlen); + if (pathlen & 3) + *(p + pathlen / 4) = 0; + memcpy(p, path, pathlen); p += (pathlen + 3) / 4; len = (uint32_t *)p - (uint32_t *)&(data[0]); - rpc_req (PROG_MOUNT, MOUNT_ADDENTRY, data, len); + rpc_req(PROG_MOUNT, MOUNT_ADDENTRY, data, len); } /************************************************************************** NFS_UMOUNTALL - Unmount all our NFS Filesystems on the Server **************************************************************************/ static void -nfs_umountall_req (void) +nfs_umountall_req(void) { uint32_t data[1024]; uint32_t *p; int len; - if ((NfsSrvMountPort == -1) || (!fs_mounted)) { + if ((NfsSrvMountPort == -1) || (!fs_mounted)) /* Nothing mounted, nothing to umount */ return; - } p = &(data[0]); - p = (uint32_t *)rpc_add_credentials ((long *)p); + p = (uint32_t *)rpc_add_credentials((long *)p); len = (uint32_t *)p - (uint32_t *)&(data[0]); - rpc_req (PROG_MOUNT, MOUNT_UMOUNTALL, data, len); + rpc_req(PROG_MOUNT, MOUNT_UMOUNTALL, data, len); } /*************************************************************************** @@ -277,65 +278,66 @@ nfs_umountall_req (void) * so that inside the nfs() function a recursion can be done. **************************************************************************/ static void -nfs_readlink_req (void) +nfs_readlink_req(void) { uint32_t data[1024]; uint32_t *p; int len; p = &(data[0]); - p = (uint32_t *)rpc_add_credentials ((long *)p); + p = (uint32_t *)rpc_add_credentials((long *)p); - memcpy (p, filefh, NFS_FHSIZE); + memcpy(p, filefh, NFS_FHSIZE); p += (NFS_FHSIZE / 4); len = (uint32_t *)p - (uint32_t *)&(data[0]); - rpc_req (PROG_NFS, NFS_READLINK, data, len); + rpc_req(PROG_NFS, NFS_READLINK, data, len); } /************************************************************************** NFS_LOOKUP - Lookup Pathname **************************************************************************/ static void -nfs_lookup_req (char *fname) +nfs_lookup_req(char *fname) { uint32_t data[1024]; uint32_t *p; int len; int fnamelen; - fnamelen = strlen (fname); + fnamelen = strlen(fname); p = &(data[0]); - p = (uint32_t *)rpc_add_credentials ((long *)p); + p = (uint32_t *)rpc_add_credentials((long *)p); - memcpy (p, dirfh, NFS_FHSIZE); + memcpy(p, dirfh, NFS_FHSIZE); p += (NFS_FHSIZE / 4); *p++ = htonl(fnamelen); - if (fnamelen & 3) *(p + fnamelen / 4) = 0; - memcpy (p, fname, fnamelen); + if (fnamelen & 3) + *(p + fnamelen / 4) = 0; + memcpy(p, fname, fnamelen); p += (fnamelen + 3) / 4; len = (uint32_t *)p - (uint32_t *)&(data[0]); - rpc_req (PROG_NFS, NFS_LOOKUP, data, len); + rpc_req(PROG_NFS, NFS_LOOKUP, data, len); } /************************************************************************** NFS_READ - Read File on NFS Server **************************************************************************/ static void -nfs_read_req (int offset, int readlen) +nfs_read_req(int offset, int readlen) { uint32_t data[1024]; uint32_t *p; int len; p = &(data[0]); - p = (uint32_t *)rpc_add_credentials ((long *)p); + p = (uint32_t *)rpc_add_credentials((long *)p); - memcpy (p, filefh, NFS_FHSIZE); + memcpy(p, filefh, NFS_FHSIZE); p += (NFS_FHSIZE / 4); *p++ = htonl(offset); *p++ = htonl(readlen); @@ -343,7 +345,7 @@ nfs_read_req (int offset, int readlen) len = (uint32_t *)p - (uint32_t *)&(data[0]); - rpc_req (PROG_NFS, NFS_READ, data, len); + rpc_req(PROG_NFS, NFS_READ, data, len); } /************************************************************************** @@ -351,31 +353,31 @@ RPC request dispatcher **************************************************************************/ static void -NfsSend (void) +NfsSend(void) { debug("%s\n", __func__); switch (NfsState) { case STATE_PRCLOOKUP_PROG_MOUNT_REQ: - rpc_lookup_req (PROG_MOUNT, 1); + rpc_lookup_req(PROG_MOUNT, 1); break; case STATE_PRCLOOKUP_PROG_NFS_REQ: - rpc_lookup_req (PROG_NFS, 2); + rpc_lookup_req(PROG_NFS, 2); break; case STATE_MOUNT_REQ: - nfs_mount_req (nfs_path); + nfs_mount_req(nfs_path); break; case STATE_UMOUNT_REQ: - nfs_umountall_req (); + nfs_umountall_req(); break; case STATE_LOOKUP_REQ: - nfs_lookup_req (nfs_filename); + nfs_lookup_req(nfs_filename); break; case STATE_READ_REQ: - nfs_read_req (nfs_offset, nfs_len); + nfs_read_req(nfs_offset, nfs_len); break; case STATE_READLINK_REQ: - nfs_readlink_req (); + nfs_readlink_req(); break; } } @@ -385,11 +387,11 @@ Handlers for the reply from server **************************************************************************/ static int -rpc_lookup_reply (int prog, uchar *pkt, unsigned len) +rpc_lookup_reply(int prog, uchar *pkt, unsigned len) { struct rpc_t rpc_pkt; - memcpy ((unsigned char *)&rpc_pkt, pkt, len); + memcpy((unsigned char *)&rpc_pkt, pkt, len); debug("%s\n", __func__); @@ -398,9 +400,8 @@ rpc_lookup_reply (int prog, uchar *pkt, unsigned len) if (rpc_pkt.u.reply.rstatus || rpc_pkt.u.reply.verifier || - rpc_pkt.u.reply.astatus) { + rpc_pkt.u.reply.astatus) return -1; - } switch (prog) { case PROG_MOUNT: @@ -415,13 +416,13 @@ rpc_lookup_reply (int prog, uchar *pkt, unsigned len) } static int -nfs_mount_reply (uchar *pkt, unsigned len) +nfs_mount_reply(uchar *pkt, unsigned len) { struct rpc_t rpc_pkt; debug("%s\n", __func__); - memcpy ((unsigned char *)&rpc_pkt, pkt, len); + memcpy((unsigned char *)&rpc_pkt, pkt, len); if (ntohl(rpc_pkt.u.reply.id) != rpc_id) return -1; @@ -429,48 +430,46 @@ nfs_mount_reply (uchar *pkt, unsigned len) if (rpc_pkt.u.reply.rstatus || rpc_pkt.u.reply.verifier || rpc_pkt.u.reply.astatus || - rpc_pkt.u.reply.data[0]) { + rpc_pkt.u.reply.data[0]) return -1; - } fs_mounted = 1; - memcpy (dirfh, rpc_pkt.u.reply.data + 1, NFS_FHSIZE); + memcpy(dirfh, rpc_pkt.u.reply.data + 1, NFS_FHSIZE); return 0; } static int -nfs_umountall_reply (uchar *pkt, unsigned len) +nfs_umountall_reply(uchar *pkt, unsigned len) { struct rpc_t rpc_pkt; debug("%s\n", __func__); - memcpy ((unsigned char *)&rpc_pkt, pkt, len); + memcpy((unsigned char *)&rpc_pkt, pkt, len); if (ntohl(rpc_pkt.u.reply.id) != rpc_id) return -1; if (rpc_pkt.u.reply.rstatus || rpc_pkt.u.reply.verifier || - rpc_pkt.u.reply.astatus) { + rpc_pkt.u.reply.astatus) return -1; - } fs_mounted = 0; - memset (dirfh, 0, sizeof(dirfh)); + memset(dirfh, 0, sizeof(dirfh)); return 0; } static int -nfs_lookup_reply (uchar *pkt, unsigned len) +nfs_lookup_reply(uchar *pkt, unsigned len) { struct rpc_t rpc_pkt; debug("%s\n", __func__); - memcpy ((unsigned char *)&rpc_pkt, pkt, len); + memcpy((unsigned char *)&rpc_pkt, pkt, len); if (ntohl(rpc_pkt.u.reply.id) != rpc_id) return -1; @@ -478,24 +477,23 @@ nfs_lookup_reply (uchar *pkt, unsigned len) if (rpc_pkt.u.reply.rstatus || rpc_pkt.u.reply.verifier || rpc_pkt.u.reply.astatus || - rpc_pkt.u.reply.data[0]) { + rpc_pkt.u.reply.data[0]) return -1; - } - memcpy (filefh, rpc_pkt.u.reply.data + 1, NFS_FHSIZE); + memcpy(filefh, rpc_pkt.u.reply.data + 1, NFS_FHSIZE); return 0; } static int -nfs_readlink_reply (uchar *pkt, unsigned len) +nfs_readlink_reply(uchar *pkt, unsigned len) { struct rpc_t rpc_pkt; int rlen; debug("%s\n", __func__); - memcpy ((unsigned char *)&rpc_pkt, pkt, len); + memcpy((unsigned char *)&rpc_pkt, pkt, len); if (ntohl(rpc_pkt.u.reply.id) != rpc_id) return -1; @@ -503,34 +501,34 @@ nfs_readlink_reply (uchar *pkt, unsigned len) if (rpc_pkt.u.reply.rstatus || rpc_pkt.u.reply.verifier || rpc_pkt.u.reply.astatus || - rpc_pkt.u.reply.data[0]) { + rpc_pkt.u.reply.data[0]) return -1; - } - rlen = ntohl (rpc_pkt.u.reply.data[1]); /* new path length */ + rlen = ntohl(rpc_pkt.u.reply.data[1]); /* new path length */ if (*((char *)&(rpc_pkt.u.reply.data[2])) != '/') { int pathlen; - strcat (nfs_path, "/"); + strcat(nfs_path, "/"); pathlen = strlen(nfs_path); - memcpy (nfs_path+pathlen, (uchar *)&(rpc_pkt.u.reply.data[2]), rlen); + memcpy(nfs_path + pathlen, (uchar *)&(rpc_pkt.u.reply.data[2]), + rlen); nfs_path[pathlen + rlen] = 0; } else { - memcpy (nfs_path, (uchar *)&(rpc_pkt.u.reply.data[2]), rlen); + memcpy(nfs_path, (uchar *)&(rpc_pkt.u.reply.data[2]), rlen); nfs_path[rlen] = 0; } return 0; } static int -nfs_read_reply (uchar *pkt, unsigned len) +nfs_read_reply(uchar *pkt, unsigned len) { struct rpc_t rpc_pkt; int rlen; debug("%s\n", __func__); - memcpy ((uchar *)&rpc_pkt, pkt, sizeof(rpc_pkt.u.reply)); + memcpy((uchar *)&rpc_pkt, pkt, sizeof(rpc_pkt.u.reply)); if (ntohl(rpc_pkt.u.reply.id) != rpc_id) return -1; @@ -539,24 +537,22 @@ nfs_read_reply (uchar *pkt, unsigned len) rpc_pkt.u.reply.verifier || rpc_pkt.u.reply.astatus || rpc_pkt.u.reply.data[0]) { - if (rpc_pkt.u.reply.rstatus) { + if (rpc_pkt.u.reply.rstatus) return -9999; - } - if (rpc_pkt.u.reply.astatus) { + if (rpc_pkt.u.reply.astatus) return -9999; - } - return -ntohl(rpc_pkt.u.reply.data[0]);; + return -ntohl(rpc_pkt.u.reply.data[0]); } - if ((nfs_offset!=0) && !((nfs_offset) % (NFS_READ_SIZE/2*10*HASHES_PER_LINE))) { - puts ("\n\t "); - } - if (!(nfs_offset % ((NFS_READ_SIZE/2)*10))) { - putc ('#'); - } + if ((nfs_offset != 0) && !((nfs_offset) % + (NFS_READ_SIZE / 2 * 10 * HASHES_PER_LINE))) + puts("\n\t "); + if (!(nfs_offset % ((NFS_READ_SIZE / 2) * 10))) + putc('#'); rlen = ntohl(rpc_pkt.u.reply.data[18]); - if ( store_block ((uchar *)pkt+sizeof(rpc_pkt.u.reply), nfs_offset, rlen) ) + if (store_block((uchar *)pkt + sizeof(rpc_pkt.u.reply), + nfs_offset, rlen)) return -9999; return rlen; @@ -567,15 +563,15 @@ Interfaces of U-BOOT **************************************************************************/ static void -NfsTimeout (void) +NfsTimeout(void) { - if ( ++NfsTimeoutCount > NFS_RETRY_COUNT ) { - puts ("\nRetry count exceeded; starting again\n"); - NetStartAgain (); + if (++NfsTimeoutCount > NFS_RETRY_COUNT) { + puts("\nRetry count exceeded; starting again\n"); + NetStartAgain(); } else { puts("T "); - NetSetTimeout (NFS_TIMEOUT, NfsTimeout); - NfsSend (); + NetSetTimeout(NFS_TIMEOUT, NfsTimeout); + NfsSend(); } } @@ -586,86 +582,87 @@ NfsHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, unsigned len) debug("%s\n", __func__); - if (dest != NfsOurPort) return; + if (dest != NfsOurPort) + return; switch (NfsState) { case STATE_PRCLOOKUP_PROG_MOUNT_REQ: - rpc_lookup_reply (PROG_MOUNT, pkt, len); + rpc_lookup_reply(PROG_MOUNT, pkt, len); NfsState = STATE_PRCLOOKUP_PROG_NFS_REQ; - NfsSend (); + NfsSend(); break; case STATE_PRCLOOKUP_PROG_NFS_REQ: - rpc_lookup_reply (PROG_NFS, pkt, len); + rpc_lookup_reply(PROG_NFS, pkt, len); NfsState = STATE_MOUNT_REQ; - NfsSend (); + NfsSend(); break; case STATE_MOUNT_REQ: if (nfs_mount_reply(pkt, len)) { - puts ("*** ERROR: Cannot mount\n"); + puts("*** ERROR: Cannot mount\n"); /* just to be sure... */ NfsState = STATE_UMOUNT_REQ; - NfsSend (); + NfsSend(); } else { NfsState = STATE_LOOKUP_REQ; - NfsSend (); + NfsSend(); } break; case STATE_UMOUNT_REQ: if (nfs_umountall_reply(pkt, len)) { - puts ("*** ERROR: Cannot umount\n"); + puts("*** ERROR: Cannot umount\n"); NetState = NETLOOP_FAIL; } else { - puts ("\ndone\n"); + puts("\ndone\n"); NetState = NfsDownloadState; } break; case STATE_LOOKUP_REQ: if (nfs_lookup_reply(pkt, len)) { - puts ("*** ERROR: File lookup fail\n"); + puts("*** ERROR: File lookup fail\n"); NfsState = STATE_UMOUNT_REQ; - NfsSend (); + NfsSend(); } else { NfsState = STATE_READ_REQ; nfs_offset = 0; nfs_len = NFS_READ_SIZE; - NfsSend (); + NfsSend(); } break; case STATE_READLINK_REQ: if (nfs_readlink_reply(pkt, len)) { - puts ("*** ERROR: Symlink fail\n"); + puts("*** ERROR: Symlink fail\n"); NfsState = STATE_UMOUNT_REQ; - NfsSend (); + NfsSend(); } else { debug("Symlink --> %s\n", nfs_path); - nfs_filename = basename (nfs_path); - nfs_path = dirname (nfs_path); + nfs_filename = basename(nfs_path); + nfs_path = dirname(nfs_path); NfsState = STATE_MOUNT_REQ; - NfsSend (); + NfsSend(); } break; case STATE_READ_REQ: - rlen = nfs_read_reply (pkt, len); - NetSetTimeout (NFS_TIMEOUT, NfsTimeout); + rlen = nfs_read_reply(pkt, len); + NetSetTimeout(NFS_TIMEOUT, NfsTimeout); if (rlen > 0) { nfs_offset += rlen; - NfsSend (); - } - else if ((rlen == -NFSERR_ISDIR)||(rlen == -NFSERR_INVAL)) { + NfsSend(); + } else if ((rlen == -NFSERR_ISDIR) || (rlen == -NFSERR_INVAL)) { /* symbolic link */ NfsState = STATE_READLINK_REQ; - NfsSend (); + NfsSend(); } else { - if ( ! rlen ) NfsDownloadState = NETLOOP_SUCCESS; + if (!rlen) + NfsDownloadState = NETLOOP_SUCCESS; NfsState = STATE_UMOUNT_REQ; - NfsSend (); + NfsSend(); } break; } @@ -673,7 +670,7 @@ NfsHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, unsigned len) void -NfsStart (void) +NfsStart(void) { debug("%s\n", __func__); NfsDownloadState = NETLOOP_FAIL; @@ -683,7 +680,7 @@ NfsStart (void) if (nfs_path == NULL) { NetState = NETLOOP_FAIL; - puts ("*** ERROR: Fail allocate memory\n"); + puts("*** ERROR: Fail allocate memory\n"); return; } @@ -692,29 +689,29 @@ NfsStart (void) NetOurIP & 0xFF, (NetOurIP >> 8) & 0xFF, (NetOurIP >> 16) & 0xFF, - (NetOurIP >> 24) & 0xFF ); - strcpy (nfs_path, default_filename); + (NetOurIP >> 24) & 0xFF); + strcpy(nfs_path, default_filename); - printf ("*** Warning: no boot file name; using '%s'\n", + printf("*** Warning: no boot file name; using '%s'\n", nfs_path); } else { - char *p=BootFile; + char *p = BootFile; - p = strchr (p, ':'); + p = strchr(p, ':'); if (p != NULL) { - NfsServerIP = string_to_ip (BootFile); + NfsServerIP = string_to_ip(BootFile); ++p; - strcpy (nfs_path, p); + strcpy(nfs_path, p); } else { - strcpy (nfs_path, BootFile); + strcpy(nfs_path, BootFile); } } - nfs_filename = basename (nfs_path); - nfs_path = dirname (nfs_path); + nfs_filename = basename(nfs_path); + nfs_path = dirname(nfs_path); - printf ("Using %s device\n", eth_get_name()); + printf("Using %s device\n", eth_get_name()); printf("File transfer via NFS from server %pI4" "; our IP address is %pI4", &NfsServerIP, &NetOurIP); @@ -725,19 +722,20 @@ NfsStart (void) IPaddr_t ServerNet = NetServerIP & NetOurSubnetMask; if (OurNet != ServerNet) - printf("; sending through gateway %pI4", &NetOurGatewayIP); + printf("; sending through gateway %pI4", + &NetOurGatewayIP); } - printf ("\nFilename '%s/%s'.", nfs_path, nfs_filename); + printf("\nFilename '%s/%s'.", nfs_path, nfs_filename); if (NetBootFileSize) { - printf (" Size is 0x%x Bytes = ", NetBootFileSize<<9); - print_size (NetBootFileSize<<9, ""); + printf(" Size is 0x%x Bytes = ", NetBootFileSize<<9); + print_size(NetBootFileSize<<9, ""); } - printf ("\nLoad address: 0x%lx\n" + printf("\nLoad address: 0x%lx\n" "Loading: *\b", load_addr); - NetSetTimeout (NFS_TIMEOUT, NfsTimeout); - NetSetHandler (NfsHandler); + NetSetTimeout(NFS_TIMEOUT, NfsTimeout); + NetSetHandler(NfsHandler); NfsTimeoutCount = 0; NfsState = STATE_PRCLOOKUP_PROG_MOUNT_REQ; @@ -747,7 +745,7 @@ NfsStart (void) NfsOurPort = 1000; /* zero out server ether in case the server ip has changed */ - memset (NetServerEther, 0, 6); + memset(NetServerEther, 0, 6); - NfsSend (); + NfsSend(); } @@ -72,7 +72,7 @@ struct rpc_t { } reply; } u; }; -extern void NfsStart (void); /* Begin NFS */ +extern void NfsStart(void); /* Begin NFS */ /**********************************************************************/ @@ -58,21 +58,21 @@ static void RarpTimeout(void) { if (RarpTry >= TIMEOUT_COUNT) { - puts ("\nRetry count exceeded; starting again\n"); - NetStartAgain (); + puts("\nRetry count exceeded; starting again\n"); + NetStartAgain(); } else { - NetSetTimeout (TIMEOUT, RarpTimeout); - RarpRequest (); + NetSetTimeout(TIMEOUT, RarpTimeout); + RarpRequest(); } } void -RarpRequest (void) +RarpRequest(void) { int i; - volatile uchar *pkt; - ARP_t * rarp; + uchar *pkt; + ARP_t *rarp; printf("RARP broadcast %d\n", ++RarpTry); pkt = NetTxPacket; @@ -81,18 +81,18 @@ RarpRequest (void) rarp = (ARP_t *)pkt; - rarp->ar_hrd = htons (ARP_ETHER); - rarp->ar_pro = htons (PROT_IP); + rarp->ar_hrd = htons(ARP_ETHER); + rarp->ar_pro = htons(PROT_IP); rarp->ar_hln = 6; rarp->ar_pln = 4; - rarp->ar_op = htons (RARPOP_REQUEST); - memcpy (&rarp->ar_data[0], NetOurEther, 6); /* source ET addr */ - memcpy (&rarp->ar_data[6], &NetOurIP, 4); /* source IP addr */ - memcpy (&rarp->ar_data[10], NetOurEther, 6); /* dest ET addr = source ET addr ??*/ + rarp->ar_op = htons(RARPOP_REQUEST); + memcpy(&rarp->ar_data[0], NetOurEther, 6); /* source ET addr */ + memcpy(&rarp->ar_data[6], &NetOurIP, 4); /* source IP addr */ + /* dest ET addr = source ET addr ??*/ + memcpy(&rarp->ar_data[10], NetOurEther, 6); /* dest. IP addr set to broadcast */ - for (i = 0; i <= 3; i++) { + for (i = 0; i <= 3; i++) rarp->ar_data[16 + i] = 0xff; - } NetSendPacket(NetTxPacket, (pkt - NetTxPacket) + ARP_HDR_SIZE); @@ -35,9 +35,9 @@ * Global functions and variables. */ -extern int RarpTry; +extern int RarpTry; -extern void RarpRequest (void); /* Send a RARP request */ +extern void RarpRequest(void); /* Send a RARP request */ /**********************************************************************/ @@ -17,7 +17,7 @@ static int SntpOurPort; static void -SntpSend (void) +SntpSend(void) { struct sntp_pkt_t pkt; int pktlen = SNTP_PACKET_LEN; @@ -25,24 +25,26 @@ SntpSend (void) debug("%s\n", __func__); - memset (&pkt, 0, sizeof(pkt)); + memset(&pkt, 0, sizeof(pkt)); pkt.li = NTP_LI_NOLEAP; pkt.vn = NTP_VERSION; pkt.mode = NTP_MODE_CLIENT; - memcpy ((char *)NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE, (char *)&pkt, pktlen); + memcpy((char *)NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE, + (char *)&pkt, pktlen); SntpOurPort = 10000 + (get_timer(0) % 4096); sport = NTP_SERVICE_PORT; - NetSendUDPPacket (NetServerEther, NetNtpServerIP, sport, SntpOurPort, pktlen); + NetSendUDPPacket(NetServerEther, NetNtpServerIP, sport, SntpOurPort, + pktlen); } static void -SntpTimeout (void) +SntpTimeout(void) { - puts ("Timeout\n"); + puts("Timeout\n"); NetState = NETLOOP_FAIL; return; } @@ -57,19 +59,20 @@ SntpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, debug("%s\n", __func__); - if (dest != SntpOurPort) return; + if (dest != SntpOurPort) + return; /* * As the RTC's used in U-Boot sepport second resolution only * we simply ignore the sub-second field. */ - memcpy (&seconds, &rpktp->transmit_timestamp, sizeof(ulong)); + memcpy(&seconds, &rpktp->transmit_timestamp, sizeof(ulong)); to_tm(ntohl(seconds) - 2208988800UL + NetTimeOffset, &tm); #if defined(CONFIG_CMD_DATE) - rtc_set (&tm); + rtc_set(&tm); #endif - printf ("Date: %4d-%02d-%02d Time: %2d:%02d:%02d\n", + printf("Date: %4d-%02d-%02d Time: %2d:%02d:%02d\n", tm.tm_year, tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); @@ -77,13 +80,13 @@ SntpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, } void -SntpStart (void) +SntpStart(void) { debug("%s\n", __func__); - NetSetTimeout (SNTP_TIMEOUT, SntpTimeout); + NetSetTimeout(SNTP_TIMEOUT, SntpTimeout); NetSetHandler(SntpHandler); - memset (NetServerEther, 0, 6); + memset(NetServerEther, 0, sizeof(NetServerEther)); - SntpSend (); + SntpSend(); } @@ -56,6 +56,6 @@ struct sntp_pkt_t { unsigned long long transmit_timestamp; }; -extern void SntpStart (void); /* Begin SNTP */ +extern void SntpStart(void); /* Begin SNTP */ #endif /* __SNTP_H__ */ @@ -11,6 +11,9 @@ #include <net.h> #include "tftp.h" #include "bootp.h" +#ifdef CONFIG_SYS_DIRECT_FLASH_TFTP +#include <flash.h> +#endif /* Well known TFTP port # */ #define WELL_KNOWN_PORT 69 @@ -112,10 +115,6 @@ static char default_filename[DEFAULT_NAME_LEN]; static char tftp_filename[MAX_LEN]; -#ifdef CONFIG_SYS_DIRECT_FLASH_TFTP -extern flash_info_t flash_info[]; -#endif - /* 512 is poor choice for ethernet, MTU is typically 1500. * Minus eth.hdrs thats 1468. Can get 2x better throughput with * almost-MTU block sizes. At least try... fall back to 512 if need be. @@ -137,7 +136,6 @@ static unsigned *Bitmap; static int PrevBitmapHole, Mapsize = MTFTP_BITMAPSIZE; static uchar ProhibitMcast, MasterClient; static uchar Multicast; -extern IPaddr_t Mcast_addr; static int Mcast_port; static ulong TftpEndingBlock; /* can get 'last' block before done..*/ @@ -157,7 +155,7 @@ mcast_cleanup(void) #endif /* CONFIG_MCAST_TFTP */ -static __inline__ void +static inline void store_block(unsigned block, uchar *src, unsigned len) { ulong offset = block * TftpBlkSize + TftpBlockWrapOffset; @@ -182,8 +180,7 @@ store_block(unsigned block, uchar *src, unsigned len) NetState = NETLOOP_FAIL; return; } - } - else + } else #endif /* CONFIG_SYS_DIRECT_FLASH_TFTP */ { (void)memcpy((void *)(load_addr + offset), src, len); @@ -310,9 +307,9 @@ static void TftpSend(void) { uchar *pkt; - volatile uchar *xp; - int len = 0; - volatile ushort *s; + uchar *xp; + int len = 0; + ushort *s; #ifdef CONFIG_MCAST_TFTP /* Multicast TFTP.. non-MasterClients do not ACK data. */ @@ -357,12 +354,14 @@ TftpSend(void) 0, TftpBlkSizeOption, 0); #ifdef CONFIG_MCAST_TFTP /* Check all preconditions before even trying the option */ - if (!ProhibitMcast - && (Bitmap = malloc(Mapsize)) - && eth_get_dev()->mcast) { - free(Bitmap); - Bitmap = NULL; - pkt += sprintf((char *)pkt, "multicast%c%c", 0, 0); + if (!ProhibitMcast) { + Bitmap = malloc(Mapsize); + if (Bitmap && eth_get_dev()->mcast) { + free(Bitmap); + Bitmap = NULL; + pkt += sprintf((char *)pkt, "multicast%c%c", + 0, 0); + } } #endif /* CONFIG_MCAST_TFTP */ len = pkt - xp; @@ -630,8 +629,7 @@ TftpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, mcast_cleanup(); NetState = NETLOOP_SUCCESS; } - } - else + } else #endif if (len < TftpBlkSize) tftp_complete(); @@ -19,7 +19,7 @@ void TftpStart(enum proto_t protocol); /* Begin TFTP get/put */ #ifdef CONFIG_CMD_TFTPSRV -extern void TftpStartServer(void); /* Wait for incoming TFTP put */ +extern void TftpStartServer(void); /* Wait for incoming TFTP put */ #endif /**********************************************************************/ |