1 | #ifndef BSP_BSDNET_ATTACH_INFO_H |
---|
2 | #define BSP_BSDNET_ATTACH_INFO_H |
---|
3 | |
---|
4 | /* Author: Till Straumann, 2005; see ../../LICENSE */ |
---|
5 | |
---|
6 | /* Rationale: traditionally, BSPs only supported a single networking interface |
---|
7 | * the BSP defined RTEMS_NETWORK_DRIVER_NAME & friends macros |
---|
8 | * for applications to use. |
---|
9 | * If more than one interface is present, this simple approach is |
---|
10 | * not enough. |
---|
11 | * Hence, this BSP exports a routine declaring all available interfaces |
---|
12 | * so the application can make a choice. |
---|
13 | */ |
---|
14 | |
---|
15 | #ifdef __cplusplus |
---|
16 | extern "C" { |
---|
17 | #endif |
---|
18 | |
---|
19 | /* Fwd. decl just in case */ |
---|
20 | struct rtems_bsdnet_ifconfig; |
---|
21 | |
---|
22 | typedef struct { |
---|
23 | /* name of the interface */ |
---|
24 | const char *name; |
---|
25 | /* optional description (to be used by chooser 'help' function etc.) */ |
---|
26 | const char *description; |
---|
27 | /* driver 'attach' function */ |
---|
28 | int (*attach_fn)(struct rtems_bsdnet_ifconfig*, int); |
---|
29 | } BSP_NetIFDescRec, *BSP_NetIFDesc; |
---|
30 | |
---|
31 | /* Return a pointer to the (static) list of network interface descriptions |
---|
32 | * of this board. |
---|
33 | * |
---|
34 | * NOTES: A NULL value is returned if e.g., the board type cannot be determined |
---|
35 | * or for other reasons. |
---|
36 | * The 'description' field is optional, i.e., may be NULL. |
---|
37 | * The list is terminated by an element with a NULL name field. |
---|
38 | * The interfaces are listed in the order they are labelled. |
---|
39 | */ |
---|
40 | |
---|
41 | BSP_NetIFDesc |
---|
42 | BSP_availableNetIFs(); |
---|
43 | |
---|
44 | /* Define this macro so applications can conditionally compile this API */ |
---|
45 | #define BSP_HAS_MULTIPLE_NETIFS(x) BSP_availableNetIFs() |
---|
46 | |
---|
47 | /* Legacy macro; applications should use BSP_Available_NetIfs() to choose |
---|
48 | * an interface and attach function. |
---|
49 | */ |
---|
50 | extern char BSP_auto_network_driver_name[20]; |
---|
51 | #define RTEMS_BSP_NETWORK_DRIVER_NAME BSP_auto_network_driver_name |
---|
52 | |
---|
53 | #define RTEMS_BSP_NETWORK_DRIVER_ATTACH BSP_auto_enet_attach |
---|
54 | |
---|
55 | /* This routine checks the name field passed in the 'ifconfig'. |
---|
56 | * If the name is NULL or points to the BSP_auto_network_driver_name |
---|
57 | * array, the routine checks all interfaces for an active link and |
---|
58 | * attaches the first alive one. |
---|
59 | * It also updates 'ifconfig' to reflect the chosen interface's name |
---|
60 | * and attach function. |
---|
61 | * |
---|
62 | * If another name is passed in, the routine scans |
---|
63 | * the available interfaces for that name and uses it, if found. |
---|
64 | * Eventually, a default interface is chosen (provided that |
---|
65 | * the board type is successfully detected). |
---|
66 | * |
---|
67 | * Note that only ONE interface chained into rtems_bsdnet_config |
---|
68 | * may use the "auto" name. |
---|
69 | * |
---|
70 | */ |
---|
71 | |
---|
72 | int |
---|
73 | BSP_auto_enet_attach(struct rtems_bsdnet_ifconfig *ifconfig, int attaching); |
---|
74 | |
---|
75 | #ifdef __cplusplus |
---|
76 | } |
---|
77 | #endif |
---|
78 | |
---|
79 | #endif |
---|