Mercurial > flash_v2
annotate packages/net/tcpip/current/src/lib/network_support.c @ 156:b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
| author | jlarmour |
|---|---|
| date | Fri, 06 Apr 2001 17:20:13 +0000 |
| parents | 6ed91473a1cd |
| children |
| rev | line source |
|---|---|
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
1 //========================================================================== |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
2 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
3 // lib/net_support.c |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
4 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
5 // Misc network support functions |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
6 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
7 //========================================================================== |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
8 //####COPYRIGHTBEGIN#### |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
9 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
10 // ------------------------------------------- |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
11 // The contents of this file are subject to the Red Hat eCos Public License |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
12 // Version 1.1 (the "License"); you may not use this file except in |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
13 // compliance with the License. You may obtain a copy of the License at |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
14 // http://www.redhat.com/ |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
15 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
16 // Software distributed under the License is distributed on an "AS IS" |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
18 // License for the specific language governing rights and limitations under |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
19 // the License. |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
20 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
21 // The Original Code is eCos - Embedded Configurable Operating System, |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
22 // released September 30, 1998. |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
23 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
24 // The Initial Developer of the Original Code is Red Hat. |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
25 // Portions created by Red Hat are |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc. |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
27 // All Rights Reserved. |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
28 // ------------------------------------------- |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
29 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
30 //####COPYRIGHTEND#### |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
31 //####BSDCOPYRIGHTBEGIN#### |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
32 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
33 // ------------------------------------------- |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
34 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
35 // Portions of this software may have been derived from OpenBSD or other sources, |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
36 // and are covered by the appropriate copyright disclaimers included herein. |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
37 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
38 // ------------------------------------------- |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
39 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
40 //####BSDCOPYRIGHTEND#### |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
41 //========================================================================== |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
42 //#####DESCRIPTIONBEGIN#### |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
43 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
44 // Author(s): gthomas |
|
103
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
45 // Contributors: gthomas, sorin@netappi.com ("Sorin Babeanu"), hmt |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
46 // Date: 2000-01-10 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
47 // Purpose: |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
48 // Description: |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
49 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
50 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
51 //####DESCRIPTIONEND#### |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
52 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
53 //========================================================================== |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
54 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
55 // BOOTP support |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
56 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
57 #include <pkgconf/net.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
58 #undef _KERNEL |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
59 #include <sys/param.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
60 #include <sys/socket.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
61 #include <sys/ioctl.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
62 #include <sys/errno.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
63 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
64 #include <net/if.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
65 #include <netinet/in.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
66 #include <netinet/ip.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
67 #include <netinet/ip_icmp.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
68 #include <net/route.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
69 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
70 #include <cyg/infra/diag.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
71 #include <cyg/kernel/kapi.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
72 |
|
103
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
73 #include <stdio.h> // for 'sprintf()' |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
74 |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
75 #include <bootp.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
76 #include <network.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
77 #include <arpa/inet.h> |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
78 |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
79 #include <eth_drv.h> |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
80 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
81 #ifdef CYGPKG_NET_DHCP |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
82 #include <dhcp.h> |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
83 #endif |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
84 |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
85 #ifdef CYGHWR_NET_DRIVER_ETH0 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
86 struct bootp eth0_bootp_data; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
87 cyg_bool_t eth0_up = false; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
88 const char *eth0_name = "eth0"; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
89 #endif |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
90 #ifdef CYGHWR_NET_DRIVER_ETH1 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
91 struct bootp eth1_bootp_data; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
92 cyg_bool_t eth1_up = false; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
93 const char *eth1_name = "eth1"; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
94 #endif |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
95 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
96 #define _string(s) #s |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
97 #define string(s) _string(s) |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
98 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
99 #ifndef CYGPKG_LIBC_STDIO |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
100 #define perror(s) diag_printf(#s ": %s\n", strerror(errno)) |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
101 #endif |
|
103
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
102 |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
103 #ifdef CYGPKG_NET_NLOOP |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
104 #if 0 < CYGPKG_NET_NLOOP |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
105 // |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
106 // Initialize loopback interface ---------- Added by sorin@netappi.com |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
107 // |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
108 cyg_bool_t init_loopback_interface(int lo) |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
109 { |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
110 struct sockaddr_in *addrp; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
111 struct ifreq ifr; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
112 int s; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
113 int one = 1; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
114 struct ecos_rtentry route; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
115 struct in_addr netmask, gateway; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
116 |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
117 //diag_printf("Init_loopback_interface\n"); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
118 s = socket(AF_INET, SOCK_DGRAM, 0); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
119 if (s < 0) { |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
120 perror("socket"); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
121 return false; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
122 } |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
123 if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, &one, sizeof(one))) { |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
124 perror("setsockopt"); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
125 return false; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
126 } |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
127 |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
128 addrp = (struct sockaddr_in *) &ifr.ifr_addr; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
129 memset(addrp, 0, sizeof(*addrp)); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
130 addrp->sin_family = AF_INET; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
131 addrp->sin_len = sizeof(*addrp); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
132 addrp->sin_port = 0; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
133 // Make an address 127.0.<lo>.1 to manage multiple loopback ifs. |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
134 // (There is normally only 1, so it's the standard 127.0.0.1) |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
135 addrp->sin_addr.s_addr = htonl((0x100 * lo) + INADDR_LOOPBACK) ; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
136 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
137 #if CYGPKG_NET_NLOOP > 1 |
|
103
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
138 // Init the one we were told to |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
139 sprintf(ifr.ifr_name, "lo%d", lo); |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
140 #else |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
141 strcpy(ifr.ifr_name, "lo0"); |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
142 #endif |
|
103
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
143 |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
144 if (ioctl(s, SIOCSIFADDR, &ifr)) { |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
145 perror("SIOCIFADDR"); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
146 return false; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
147 } |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
148 |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
149 #if 1 < CYGPKG_NET_NLOOP |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
150 // We cheat to make different nets for multiple loopback devs |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
151 addrp->sin_addr.s_addr = netmask.s_addr = htonl(IN_CLASSC_NET); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
152 #else |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
153 // |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
154 addrp->sin_addr.s_addr = netmask.s_addr = htonl(IN_CLASSA_NET); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
155 #endif |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
156 if (ioctl(s, SIOCSIFNETMASK, &ifr)) { |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
157 perror("SIOCSIFNETMASK"); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
158 return false; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
159 } |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
160 ifr.ifr_flags = IFF_UP | IFF_BROADCAST | IFF_RUNNING; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
161 if (ioctl(s, SIOCSIFFLAGS, &ifr)) { |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
162 perror("SIOCSIFFLAGS"); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
163 return false; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
164 } |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
165 |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
166 gateway.s_addr = htonl(INADDR_LOOPBACK); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
167 memset(&route, 0, sizeof(route)); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
168 addrp->sin_family = AF_INET; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
169 addrp->sin_port = 0; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
170 addrp->sin_addr.s_addr = htonl((0x100 * lo) + INADDR_LOOPBACK) & netmask.s_addr; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
171 memcpy(&route.rt_dst, addrp, sizeof(*addrp)); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
172 addrp->sin_addr = netmask; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
173 memcpy(&route.rt_genmask, addrp, sizeof(*addrp)); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
174 addrp->sin_addr = gateway; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
175 memcpy(&route.rt_gateway, addrp, sizeof(*addrp)); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
176 |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
177 route.rt_dev = ifr.ifr_name; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
178 route.rt_flags = RTF_UP|RTF_GATEWAY; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
179 route.rt_metric = 0; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
180 |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
181 if (ioctl(s, SIOCADDRT, &route)) { |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
182 diag_printf("Route - dst: %s", inet_ntoa(((struct sockaddr_in *)&route.rt_dst)->sin_addr)); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
183 diag_printf(", mask: %s", inet_ntoa(((struct sockaddr_in *)&route.rt_genmask)->sin_addr)); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
184 diag_printf(", gateway: %s\n", inet_ntoa(((struct sockaddr_in *)&route.rt_gateway)->sin_addr)); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
185 if (errno != EEXIST) { |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
186 perror("SIOCADDRT 3"); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
187 return false; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
188 } |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
189 } |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
190 close(s); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
191 return true; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
192 } |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
193 #endif |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
194 #endif |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
195 |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
196 |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
197 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
198 // Internal function which builds up a fake BOOTP database for |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
199 // an interface. |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
200 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
201 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
202 static unsigned char * |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
203 add_tag(unsigned char *vp, |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
204 unsigned char tag, |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
205 void *val, |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
206 int len) |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
207 { |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
208 int i; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
209 unsigned char *xp = (unsigned char *)val; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
210 *vp++ = tag; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
211 *vp++ = len; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
212 for (i = 0; i < len; i++) { |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
213 *vp++ = *xp++; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
214 } |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
215 return vp; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
216 } |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
217 |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
218 void |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
219 build_bootp_record(struct bootp *bp, |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
220 const char *addrs_ip, |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
221 const char *addrs_netmask, |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
222 const char *addrs_broadcast, |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
223 const char *addrs_gateway, |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
224 const char *addrs_server) |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
225 { |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
226 int i; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
227 in_addr_t addr; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
228 unsigned char *vp; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
229 unsigned char cookie[] = VM_RFC1048; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
230 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
231 bzero(bp, sizeof(struct bootp)); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
232 bp->bp_op = BOOTREPLY; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
233 bp->bp_htype = HTYPE_ETHERNET; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
234 bp->bp_hlen = 6; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
235 for (i = 0; i < bp->bp_hlen; i++) { |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
236 bp->bp_chaddr[i] = 0xFF; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
237 } |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
238 bp->bp_ciaddr.s_addr = inet_addr(addrs_ip); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
239 bp->bp_yiaddr.s_addr = inet_addr(addrs_ip); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
240 bp->bp_siaddr.s_addr = inet_addr(addrs_server); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
241 bp->bp_giaddr.s_addr = inet_addr(addrs_gateway); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
242 vp = &bp->bp_vend[0]; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
243 bcopy(&cookie, vp, sizeof(cookie)); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
244 vp += sizeof(cookie); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
245 addr = inet_addr(addrs_netmask); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
246 vp = add_tag(vp, TAG_SUBNET_MASK, &addr, sizeof(in_addr_t)); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
247 addr = inet_addr(addrs_broadcast); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
248 vp = add_tag(vp, TAG_IP_BROADCAST, &addr, sizeof(in_addr_t)); |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
249 addr = inet_addr(addrs_gateway); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
250 vp = add_tag(vp, TAG_GATEWAY, &addr, sizeof(in_addr_t)); |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
251 *vp = TAG_END; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
252 } |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
253 |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
254 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
255 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
256 // Initialize network interface[s] using BOOTP/DHCP |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
257 // |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
258 void |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
259 init_all_network_interfaces(void) |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
260 { |
|
103
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
261 static volatile int in_init_all_network_interfaces = 0; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
262 #ifdef CYGPKG_IO_PCMCIA |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
263 cyg_netdevtab_entry_t *t; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
264 #endif // CYGPKG_IO_PCMCIA |
|
103
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
265 |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
266 cyg_scheduler_lock(); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
267 while ( in_init_all_network_interfaces ) { |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
268 // Another thread is doing this... |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
269 cyg_scheduler_unlock(); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
270 cyg_thread_delay( 10 ); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
271 cyg_scheduler_lock(); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
272 } |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
273 in_init_all_network_interfaces = 1; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
274 cyg_scheduler_unlock(); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
275 |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
276 #ifdef CYGHWR_NET_DRIVER_ETH0 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
277 if ( ! eth0_up ) { // Make this call idempotent |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
278 #ifdef CYGPKG_IO_PCMCIA |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
279 if ((t = eth_drv_netdev("eth0")) != (cyg_netdevtab_entry_t *)NULL) { |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
280 int tries = 0; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
281 while (t->status != CYG_NETDEVTAB_STATUS_AVAIL) { |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
282 if (tries == 0) { |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
283 diag_printf("... Waiting for PCMCIA device 'eth0'\n"); |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
284 } |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
285 if (++tries == 5) { |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
286 diag_printf("... Giving up on PCMCIA device 'eth0'\n"); |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
287 goto bail_eth0; |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
288 } |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
289 cyg_thread_delay(100); |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
290 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
291 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
292 #endif // CYGPKG_IO_PCMCIA |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
293 #ifdef CYGHWR_NET_DRIVER_ETH0_BOOTP |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
294 // Perform a complete initialization, using BOOTP/DHCP |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
295 eth0_up = true; |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
296 #ifdef CYGHWR_NET_DRIVER_ETH0_DHCP |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
297 eth0_dhcpstate = 0; // Says that initialization is external to dhcp |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
298 if (do_dhcp(eth0_name, ð0_bootp_data, ð0_dhcpstate, ð0_lease)) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
299 #else |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
300 #ifdef CYGPKG_NET_DHCP |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
301 eth0_dhcpstate = DHCPSTATE_BOOTP_FALLBACK; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
302 // so the dhcp machine does no harm if called |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
303 #endif |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
304 if (do_bootp(eth0_name, ð0_bootp_data)) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
305 #endif |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
306 { |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
307 #ifdef CYGHWR_NET_DRIVER_ETH0_BOOTP_SHOW |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
308 show_bootp(eth0_name, ð0_bootp_data); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
309 #endif |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
310 } else { |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
311 diag_printf("BOOTP/DHCP failed on eth0\n"); |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
312 eth0_up = false; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
313 } |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
314 #elif defined(CYGHWR_NET_DRIVER_ETH0_ADDRS_IP) |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
315 eth0_up = true; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
316 build_bootp_record(ð0_bootp_data, |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
317 string(CYGHWR_NET_DRIVER_ETH0_ADDRS_IP), |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
318 string(CYGHWR_NET_DRIVER_ETH0_ADDRS_NETMASK), |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
319 string(CYGHWR_NET_DRIVER_ETH0_ADDRS_BROADCAST), |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
320 string(CYGHWR_NET_DRIVER_ETH0_ADDRS_GATEWAY), |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
321 string(CYGHWR_NET_DRIVER_ETH0_ADDRS_SERVER)); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
322 show_bootp(eth0_name, ð0_bootp_data); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
323 #endif |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
324 bail_eth0: |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
325 } |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
326 #endif // CYGHWR_NET_DRIVER_ETH0 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
327 #ifdef CYGHWR_NET_DRIVER_ETH1 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
328 if ( ! eth1_up ) { // Make this call idempotent |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
329 #ifdef CYGPKG_IO_PCMCIA |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
330 if ((t = eth_drv_netdev("eth1")) != (cyg_netdevtab_entry_t *)NULL) { |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
331 int tries = 0; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
332 while (t->status != CYG_NETDEVTAB_STATUS_AVAIL) { |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
333 if (tries == 0) { |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
334 diag_printf("... Waiting for PCMCIA device 'eth1'\n"); |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
335 } |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
336 if (++tries == 5) { |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
337 diag_printf("... Giving up on PCMCIA device 'eth1'\n"); |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
338 goto bail_eth1; |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
339 } |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
340 cyg_thread_delay(100); |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
341 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
342 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
110
diff
changeset
|
343 #endif // CYGPKG_IO_PCMCIA |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
344 #ifdef CYGHWR_NET_DRIVER_ETH1_BOOTP |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
345 // Perform a complete initialization, using BOOTP/DHCP |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
346 eth1_up = true; |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
347 #ifdef CYGHWR_NET_DRIVER_ETH1_DHCP |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
348 eth1_dhcpstate = 0; // Says that initialization is external to dhcp |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
349 if (do_dhcp(eth1_name, ð1_bootp_data, ð1_dhcpstate, ð1_lease)) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
350 #else |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
351 #ifdef CYGPKG_NET_DHCP |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
352 eth1_dhcpstate = DHCPSTATE_BOOTP_FALLBACK; |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
353 // so the dhcp machine does no harm if called |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
354 #endif |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
355 if (do_bootp(eth1_name, ð1_bootp_data)) |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
356 #endif |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
357 { |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
358 #ifdef CYGHWR_NET_DRIVER_ETH1_BOOTP_SHOW |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
359 show_bootp(eth1_name, ð1_bootp_data); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
360 #endif |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
361 } else { |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
362 diag_printf("BOOTP/DHCP failed on eth1\n"); |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
363 eth1_up = false; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
364 } |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
365 #elif defined(CYGHWR_NET_DRIVER_ETH1_ADDRS_IP) |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
366 eth1_up = true; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
367 build_bootp_record(ð1_bootp_data, |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
368 string(CYGHWR_NET_DRIVER_ETH1_ADDRS_IP), |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
369 string(CYGHWR_NET_DRIVER_ETH1_ADDRS_NETMASK), |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
370 string(CYGHWR_NET_DRIVER_ETH1_ADDRS_BROADCAST), |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
371 string(CYGHWR_NET_DRIVER_ETH1_ADDRS_GATEWAY), |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
372 string(CYGHWR_NET_DRIVER_ETH1_ADDRS_SERVER)); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
373 show_bootp(eth1_name, ð1_bootp_data); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
374 #endif |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
115
diff
changeset
|
375 bail_eth1: |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
376 } |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
377 #endif // CYGHWR_NET_DRIVER_ETH1 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
378 #ifdef CYGHWR_NET_DRIVER_ETH0 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
379 #ifndef CYGHWR_NET_DRIVER_ETH0_MANUAL |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
380 if (eth0_up) { |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
381 if (!init_net(eth0_name, ð0_bootp_data)) { |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
382 diag_printf("Network initialization failed for eth0\n"); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
383 eth0_up = false; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
384 } |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
385 } |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
386 #endif |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
387 #endif |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
388 #ifdef CYGHWR_NET_DRIVER_ETH1 |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
389 #ifndef CYGHWR_NET_DRIVER_ETH1_MANUAL |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
390 if (eth1_up) { |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
391 if (!init_net(eth1_name, ð1_bootp_data)) { |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
392 diag_printf("Network initialization failed for eth1\n"); |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
393 eth1_up = false; |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
394 } |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
395 } |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
396 #endif |
|
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
397 #endif |
|
103
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
398 |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
399 #ifdef CYGPKG_NET_NLOOP |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
400 #if 0 < CYGPKG_NET_NLOOP |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
401 { |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
402 static int loop_init = 0; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
403 int i; |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
404 if ( 0 == loop_init++ ) |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
405 for ( i = 0; i < CYGPKG_NET_NLOOP; i++ ) |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
406 init_loopback_interface( i ); |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
407 } |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
408 #endif |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
409 #endif |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
410 |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
411 #ifdef CYGOPT_NET_DHCP_DHCP_THREAD |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
412 dhcp_start_dhcp_mgt_thread(); |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
413 #endif |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
414 |
|
103
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
415 // Open the monitor to other threads. |
|
95f3e12a6327
Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents:
97
diff
changeset
|
416 in_init_all_network_interfaces = 0; |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
417 |
|
97
ced4577552cd
Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff
changeset
|
418 } |
|
110
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
419 |
|
84e4bde58b26
Merge from eCos master repository on 2000-07-14-22:00:02-BST
jlarmour
parents:
103
diff
changeset
|
420 // EOF network_support.c |
