Subversion Repositories HelenOS

Rev

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

Rev 4711 Rev 4717
Line 292... Line 292...
292
 
292
 
293
    measured_string_t   names[] = {{ "IPV", 3 }, { "IP_CONFIG", 9 }, { "IP_ADDR", 7 }, { "NETMASK", 7 }, { "GATEWAY", 7 }, { "BROADCAST", 9 }, { "DNS1", 4 }, { "DNS2", 4 }, { "ARP", 3 }, { "IP_ROUTING", 10 }};
293
    measured_string_t   names[] = {{ "IPV", 3 }, { "IP_CONFIG", 9 }, { "IP_ADDR", 7 }, { "NETMASK", 7 }, { "GATEWAY", 7 }, { "BROADCAST", 9 }, { "DNS1", 4 }, { "DNS2", 4 }, { "ARP", 3 }, { "IP_ROUTING", 10 }};
294
    measured_string_ref configuration;
294
    measured_string_ref configuration;
295
    size_t              count = sizeof( names ) / sizeof( measured_string_t );
295
    size_t              count = sizeof( names ) / sizeof( measured_string_t );
296
    char *              data;
296
    char *              data;
-
 
297
    measured_string_t   address;
297
    int                 index;
298
    int                 index;
298
    ip_route_ref        route;
299
    ip_route_ref        route;
299
    in_addr_t           gateway;
300
    in_addr_t           gateway;
300
 
301
 
301
    ip_netif->arp = NULL;
302
    ip_netif->arp = NULL;
Line 355... Line 356...
355
            ip_netif->arp = NULL;
356
            ip_netif->arp = NULL;
356
        }
357
        }
357
        ip_netif->routing = configuration[ 9 ].value && ( configuration[ 9 ].value[ 0 ] == 'y' );
358
        ip_netif->routing = configuration[ 9 ].value && ( configuration[ 9 ].value[ 0 ] == 'y' );
358
        net_free_settings( configuration, data );
359
        net_free_settings( configuration, data );
359
    }
360
    }
-
 
361
    // binds the netif service which also initializes the device
360
    ip_netif->phone = bind_service( ip_netif->service, ( ipcarg_t ) ip_netif->device_id, SERVICE_IP, 0, ip_globals.client_connection );
362
    ip_netif->phone = bind_service( ip_netif->service, ( ipcarg_t ) ip_netif->device_id, SERVICE_IP, 0, ip_globals.client_connection );
361
    if( ip_netif->phone < 0 ){
363
    if( ip_netif->phone < 0 ){
362
        printf( "Failed to contact the nil service %d\n", ip_netif->service );
364
        printf( "Failed to contact the nil service %d\n", ip_netif->service );
363
        return ip_netif->phone;
365
        return ip_netif->phone;
364
    }
366
    }
365
    // MUST BE AFTER the bind_service up there!
367
    // has to be after the device netif module initialization
366
    if( ip_netif->arp ){
368
    if( ip_netif->arp ){
367
        if( route ){
369
        if( route ){
368
            configuration[ 0 ].value = ( char * ) & route->address.s_addr;
370
            address.value = ( char * ) & route->address.s_addr;
369
            configuration[ 0 ].length = CONVERT_SIZE( in_addr_t, char, 1 );
371
            address.length = CONVERT_SIZE( in_addr_t, char, 1 );
370
            ERROR_PROPAGATE( arp_device_req( ip_netif->arp->phone, ip_netif->device_id, SERVICE_IP, ip_netif->service, & configuration[ 0 ] ));
372
            ERROR_PROPAGATE( arp_device_req( ip_netif->arp->phone, ip_netif->device_id, SERVICE_IP, ip_netif->service, & address ));
371
        }else{
373
        }else{
372
            ip_netif->arp = 0;
374
            ip_netif->arp = 0;
373
        }
375
        }
374
    }
376
    }
375
    // get packet dimensions
377
    // get packet dimensions