Subversion Repositories HelenOS

Rev

Rev 3991 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3991 Rev 4155
Line 71... Line 71...
71
#endif
71
#endif
72
 
72
 
73
#define NAME    "Networking"
73
#define NAME    "Networking"
74
 
74
 
75
#define LO_NAME             "lo"
75
#define LO_NAME             "lo"
76
#define LO_FILENAME         "/sbin/lo"
76
#define LO_FILENAME         "/srv/lo"
77
#define DP8390_ISA_NAME         "dp8390_isa"
77
#define DP8390_NAME         "dp8390"
78
#define DP8390_ISA_FILENAME     "/sbin/dp8380_isa"
78
#define DP8390_FILENAME     "/srv/dp8380"
79
#define ETHERNET_NAME           "ethernet"
79
#define ETHERNET_NAME           "ethernet"
80
#define ETHERNET_FILENAME       "/sbin/ethernet"
80
#define ETHERNET_FILENAME       "/srv/ethernet"
81
#define IP_NAME             "ip"
81
#define IP_NAME             "ip"
82
#define IP_FILENAME         "/sbin/ip"
82
#define IP_FILENAME         "/srv/ip"
83
 
83
 
84
#define IPC_GET_DEVICE( call )  ( device_id_t ) IPC_GET_ARG1( * call )
84
#define IPC_GET_DEVICE( call )  ( device_id_t ) IPC_GET_ARG1( * call )
85
#define IPC_GET_COUNT( call )   ( int ) IPC_GET_ARG2( * call )
85
#define IPC_GET_COUNT( call )   ( int ) IPC_GET_ARG2( * call )
86
 
86
 
87
typedef struct module_struct    module_t;
87
typedef struct module_struct    module_t;
Line 155... Line 155...
155
int networking_message( ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count );
155
int networking_message( ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count );
156
int net_message( ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count );
156
int net_message( ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count );
157
//int       parse_line( measured_strings_ref configuration, char * line );
157
//int       parse_line( measured_strings_ref configuration, char * line );
158
int     add_configuration( measured_strings_ref configuration, const char * name, const char * value );
158
int     add_configuration( measured_strings_ref configuration, const char * name, const char * value );
159
int     read_configuration( void );
159
int     read_configuration( void );
160
task_id_t   spawn( const char * fname );
160
task_id_t   spawn( const char * const fname );
161
int     startup( void );
161
int     startup( void );
162
device_id_t generate_new_device_id( void );
162
device_id_t generate_new_device_id( void );
163
 
163
 
164
static networking_globals_t networking_globals;
164
static networking_globals_t networking_globals;
165
 
165
 
Line 256... Line 256...
256
 
256
 
257
    // run self tests
257
    // run self tests
258
//  ERROR_PROPAGATE( self_test());
258
//  ERROR_PROPAGATE( self_test());
259
 
259
 
260
    ERROR_PROPAGATE( add_module( NULL, & networking_globals.modules, LO_NAME, LO_FILENAME, SERVICE_LO, 0 ));
260
    ERROR_PROPAGATE( add_module( NULL, & networking_globals.modules, LO_NAME, LO_FILENAME, SERVICE_LO, 0 ));
261
    ERROR_PROPAGATE( add_module( NULL, & networking_globals.modules, DP8390_ISA_NAME, DP8390_ISA_FILENAME, SERVICE_DP8390_ISA, 0 ));
261
    ERROR_PROPAGATE( add_module( NULL, & networking_globals.modules, DP8390_NAME, DP8390_FILENAME, SERVICE_DP8390, 0 ));
262
    ERROR_PROPAGATE( add_module( NULL, & networking_globals.modules, ETHERNET_NAME, ETHERNET_FILENAME, SERVICE_ETHERNET, 0 ));
262
    ERROR_PROPAGATE( add_module( NULL, & networking_globals.modules, ETHERNET_NAME, ETHERNET_FILENAME, SERVICE_ETHERNET, 0 ));
263
 
263
 
264
#ifdef NETWORKING_modular
264
#ifdef NETWORKING_modular
265
    task_id = spawn( "/sbin/ip" );
265
    task_id = spawn( "/srv/ip" );
266
    if( ! task_id ) return EINVAL;
266
    if( ! task_id ) return EINVAL;
267
    ERROR_PROPAGATE( add_module( NULL, & networking_globals.modules, IP_NAME, IP_FILENAME, SERVICE_IP, task_id ));
267
    ERROR_PROPAGATE( add_module( NULL, & networking_globals.modules, IP_NAME, IP_FILENAME, SERVICE_IP, task_id ));
268
//  if( ! spawn( "/sbin/udp" )) return EINVAL;
268
//  if( ! spawn( "/srv/udp" )) return EINVAL;
269
    if( ! spawn( "/sbin/tcp" )) return EINVAL;
269
    if( ! spawn( "/srv/tcp" )) return EINVAL;
270
//  if( ! spawn( "/sbin/socket" )) return EINVAL;
270
//  if( ! spawn( "/srv/socket" )) return EINVAL;
271
//  not always necesssary
271
//  not always necesssary
272
//  if( ! spawn( "/sbin/arp" )) return EINVAL;
272
//  if( ! spawn( "/srv/arp" )) return EINVAL;
273
//  if( ! spawn( "/sbin/rarp" )) return EINVAL;
273
//  if( ! spawn( "/srv/rarp" )) return EINVAL;
274
//  if( ! spawn( "/sbin/icmp" )) return EINVAL;
274
//  if( ! spawn( "/srv/icmp" )) return EINVAL;
275
 
275
 
276
#else
276
#else
277
#ifdef NETWORKING_module
277
#ifdef NETWORKING_module
278
    ipcarg_t    phonehash;
278
    ipcarg_t    phonehash;
279
 
279
 
Line 601... Line 601...
601
    ERROR_PROPAGATE( async_req_1_0( netif->driver->phone, NET_NETIF_START, netif->id ));
601
    ERROR_PROPAGATE( async_req_1_0( netif->driver->phone, NET_NETIF_START, netif->id ));
602
//  printf( "\n LO OK" );
602
//  printf( "\n LO OK" );
603
    return EOK;
603
    return EOK;
604
}
604
}
605
 
605
 
606
task_id_t spawn( const char * fname ){
606
task_id_t spawn( const char * const fname ){
607
    const char  * argv[ 2 ];
607
    char * const    argv[ 2 ] = { fname, NULL };
608
    task_id_t   res;
608
    task_id_t   res;
609
 
609
 
610
//  printf( "Spawning %s\n", fname );
610
//  printf( "Spawning %s\n", fname );
611
    argv[ 0 ] = fname;
611
//  argv[ 0 ] = fname;
612
    argv[ 1 ] = NULL;
612
//  argv[ 1 ] = NULL;
613
    res = task_spawn( fname, argv );
613
    res = task_spawn( fname, argv );
614
    if( res != 0 ){
614
    if( res != 0 ){
615
        /* Success */
615
        /* Success */
616
        usleep( 50000 );
616
        usleep( 50000 );
617
    }
617
    }