Rev 4505 | Rev 4575 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4505 | Rev 4506 | ||
---|---|---|---|
Line 219... | Line 219... | ||
219 | char * data; |
219 | char * data; |
220 | int index; |
220 | int index; |
221 | ip_route_ref route; |
221 | ip_route_ref route; |
222 | in_addr_t gateway; |
222 | in_addr_t gateway; |
223 | 223 | ||
- | 224 | ip_netif->arp = 0; |
|
- | 225 | route = NULL; |
|
224 | configuration = & names[ 0 ]; |
226 | configuration = & names[ 0 ]; |
225 | // get configuration |
227 | // get configuration |
226 | ERROR_PROPAGATE( net_get_device_conf_req( ip_globals.net_phone, ip_netif->device_id, & configuration, count, & data )); |
228 | ERROR_PROPAGATE( net_get_device_conf_req( ip_globals.net_phone, ip_netif->device_id, & configuration, count, & data )); |
227 | if( configuration ){ |
229 | if( configuration ){ |
228 | if( configuration[ 0 ].value ){ |
230 | if( configuration[ 0 ].value ){ |
Line 282... | Line 284... | ||
282 | printf( "Failed to contact the nil service %d\n", ip_netif->service ); |
284 | printf( "Failed to contact the nil service %d\n", ip_netif->service ); |
283 | return ip_netif->phone; |
285 | return ip_netif->phone; |
284 | } |
286 | } |
285 | // MUST BE AFTER the bind_service up there! |
287 | // MUST BE AFTER the bind_service up there! |
286 | if( ip_netif->arp ){ |
288 | if( ip_netif->arp ){ |
- | 289 | if( route ){ |
|
287 | configuration[ 0 ].value = ( char * ) & route->address.s_addr; |
290 | configuration[ 0 ].value = ( char * ) & route->address.s_addr; |
288 | configuration[ 0 ].length = CONVERT_SIZE( in_addr_t, char, 1 ); |
291 | configuration[ 0 ].length = CONVERT_SIZE( in_addr_t, char, 1 ); |
289 | ERROR_PROPAGATE( arp_device_req( ip_netif->arp->phone, ip_netif->device_id, SERVICE_IP, ip_netif->service, & configuration[ 0 ] )); |
292 | ERROR_PROPAGATE( arp_device_req( ip_netif->arp->phone, ip_netif->device_id, SERVICE_IP, ip_netif->service, & configuration[ 0 ] )); |
- | 293 | }else{ |
|
- | 294 | ip_netif->arp = 0; |
|
- | 295 | } |
|
290 | } |
296 | } |
291 | // get packet dimensions |
297 | // get packet dimensions |
292 | ERROR_PROPAGATE( nil_packet_size_req( ip_netif->phone, ip_netif->device_id, & ip_netif->addr_len, & ip_netif->prefix, & ip_netif->content, & ip_netif->suffix )); |
298 | ERROR_PROPAGATE( nil_packet_size_req( ip_netif->phone, ip_netif->device_id, & ip_netif->addr_len, & ip_netif->prefix, & ip_netif->content, & ip_netif->suffix )); |
293 | if( ip_netif->content < IP_MIN_CONTENT ){ |
299 | if( ip_netif->content < IP_MIN_CONTENT ){ |
294 | printf( "Maximum transmission unit %d bytes is too small, at least %d bytes are needed\n", ip_netif->content, IP_MIN_CONTENT ); |
300 | printf( "Maximum transmission unit %d bytes is too small, at least %d bytes are needed\n", ip_netif->content, IP_MIN_CONTENT ); |
Line 305... | Line 311... | ||
305 | } |
311 | } |
306 | return EOK; |
312 | return EOK; |
307 | } |
313 | } |
308 | 314 | ||
309 | int ip_device_state_msg( int il_phone, device_id_t device_id, device_state_t state ){ |
315 | int ip_device_state_msg( int il_phone, device_id_t device_id, device_state_t state ){ |
310 | ERROR_DECLARE; |
316 | // ERROR_DECLARE; |
311 | 317 | ||
312 | /* measured_string_t address; |
318 | /* measured_string_t address; |
313 | measured_string_ref translation; |
319 | measured_string_ref translation; |
314 | char * data; |
320 | char * data; |
315 | */ |
321 | */ |
316 | packet_t packet; |
322 | /* packet_t packet; |
317 | in_addr_t destination; |
323 | in_addr_t destination; |
318 | 324 | */ |
|
319 | ip_netif_ref netif; |
325 | ip_netif_ref netif; |
320 | 326 | ||
321 | netif = ip_netifs_find( & ip_globals.netifs, device_id ); |
327 | netif = ip_netifs_find( & ip_globals.netifs, device_id ); |
322 | if( ! netif ) return ENOENT; |
328 | if( ! netif ) return ENOENT; |
323 | netif->state = state; |
329 | netif->state = state; |
324 | // TODO state |
330 | // TODO state |
325 | printf( "ip - device %d changed state to %d\n\n", device_id, state ); |
331 | printf( "ip - device %d changed state to %d\n\n", device_id, state ); |
326 | if( netif->arp ){ |
332 | // if( netif->arp ){ |
327 | /* address.value = ( char * ) & ip_globals.gateway.gateway.s_addr; |
333 | /* address.value = ( char * ) & ip_globals.gateway.gateway.s_addr; |
328 | address.length = CONVERT_SIZE( ip_globals.gateway.gateway.s_addr, char, 1 ); |
334 | address.length = CONVERT_SIZE( ip_globals.gateway.gateway.s_addr, char, 1 ); |
329 | if( ERROR_OCCURRED( arp_translate_req( netif->arp->phone, netif->device_id, SERVICE_IP, & address, & translation, & data ))){ |
335 | if( ERROR_OCCURRED( arp_translate_req( netif->arp->phone, netif->device_id, SERVICE_IP, & address, & translation, & data ))){ |
330 | ERROR_PROPAGATE( arp_translate_req( netif->arp->phone, netif->device_id, SERVICE_IP, & address, & translation, & data )); |
336 | ERROR_PROPAGATE( arp_translate_req( netif->arp->phone, netif->device_id, SERVICE_IP, & address, & translation, & data )); |
331 | } |
337 | } |
Line 339... | Line 345... | ||
339 | ERROR_PROPAGATE( arp_translate_req( netif->arp->phone, netif->device_id, SERVICE_IP, & address, & translation, & data )); |
345 | ERROR_PROPAGATE( arp_translate_req( netif->arp->phone, netif->device_id, SERVICE_IP, & address, & translation, & data )); |
340 | } |
346 | } |
341 | printf( "\tgateway translated to\t= %X:%X:%X:%X:%X:%X\n", data[ 0 ], data[ 1 ], data[ 2 ], data[ 3 ], data[ 4 ], data[ 5 ] ); |
347 | printf( "\tgateway translated to\t= %X:%X:%X:%X:%X:%X\n", data[ 0 ], data[ 1 ], data[ 2 ], data[ 3 ], data[ 4 ], data[ 5 ] ); |
342 | free( translation ); |
348 | free( translation ); |
343 | free( data ); |
349 | free( data ); |
344 | */ printf( "IP - testing to send packet:\n" ); |
350 | *//* printf( "IP - testing to send packet:\n" ); |
345 | ERROR_PROPAGATE( inet_pton( AF_INET, "90.182.101.18", ( uint8_t * ) & destination.s_addr )); |
351 | ERROR_PROPAGATE( inet_pton( AF_INET, "90.182.101.18", ( uint8_t * ) & destination.s_addr )); |
346 | packet = packet_get_4( ip_globals.net_phone, 30, netif->addr_len, netif->prefix + sizeof( ip_header_t ), netif->suffix ); |
352 | packet = packet_get_4( ip_globals.net_phone, 30, netif->addr_len, netif->prefix + sizeof( ip_header_t ), netif->suffix ); |
347 | if( ! packet ) return ENOMEM; |
353 | if( ! packet ) return ENOMEM; |
348 | pq_release( ip_globals.net_phone, packet_get_id( packet )); |
354 | pq_release( ip_globals.net_phone, packet_get_id( packet )); |
349 | packet = packet_get_4( ip_globals.net_phone, 30, netif->addr_len, netif->prefix + sizeof( ip_header_t ), netif->suffix ); |
355 | packet = packet_get_4( ip_globals.net_phone, 30, netif->addr_len, netif->prefix + sizeof( ip_header_t ), netif->suffix ); |
Line 362... | Line 368... | ||
362 | pq_release( ip_globals.net_phone, packet_get_id( packet )); |
368 | pq_release( ip_globals.net_phone, packet_get_id( packet )); |
363 | } |
369 | } |
364 | ERROR_CODE = ip_send_msg( 0, 0, packet, SERVICE_IP ); |
370 | ERROR_CODE = ip_send_msg( 0, 0, packet, SERVICE_IP ); |
365 | printf( "send returned %d\n", ERROR_CODE ); |
371 | printf( "send returned %d\n", ERROR_CODE ); |
366 | } |
372 | } |
367 | return EOK; |
373 | */ return EOK; |
368 | } |
374 | } |
369 | 375 | ||
370 | int ip_connect_module( services_t service ){ |
376 | int ip_connect_module( services_t service ){ |
371 | return EOK; |
377 | return EOK; |
372 | } |
378 | } |