Changeset 91478aa in mainline for uspace/srv/net/il
- Timestamp:
- 2010-02-17T23:20:41Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9b87284, ca2d142
- Parents:
- 536ded4
- Location:
- uspace/srv/net/il
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/il/arp/arp.c
r536ded4 r91478aa 337 337 } 338 338 // get packet dimensions 339 if( ERROR_OCCURRED( nil_packet_size_req( device->phone, device_id, & device-> addr_len, & device->prefix, & device->content, & device->suffix))){339 if( ERROR_OCCURRED( nil_packet_size_req( device->phone, device_id, & device->packet_dimension ))){ 340 340 fibril_rwlock_write_unlock( & arp_globals.lock ); 341 341 arp_protos_destroy( & device->protos ); … … 392 392 // ARP packet content size = header + ( address + translation ) * 2 393 393 length = 8 + ( CONVERT_SIZE( char, uint8_t, proto->addr->length ) + CONVERT_SIZE( char, uint8_t, device->addr->length )) * 2; 394 if( length > device-> content ) return NULL;395 packet = packet_get_4( arp_globals.net_phone, device-> addr_len, device->prefix, length, device->suffix );394 if( length > device->packet_dimension.content ) return NULL; 395 packet = packet_get_4( arp_globals.net_phone, device->packet_dimension.addr_len, device->packet_dimension.prefix, length, device->packet_dimension.suffix ); 396 396 if( ! packet ) return NULL; 397 397 header = ( arp_header_ref ) packet_suffix( packet, length ); … … 472 472 memcpy( des_proto, src_proto, header->protocol_length ); 473 473 memcpy( src_proto, proto->addr->value, header->protocol_length ); 474 memcpy( src_hw, device->addr->value, device-> addr_len );474 memcpy( src_hw, device->addr->value, device->packet_dimension.addr_len ); 475 475 memcpy( des_hw, hw_source->value, header->hardware_length ); 476 476 ERROR_PROPAGATE( packet_set_addr( packet, src_hw, des_hw, header->hardware_length )); … … 511 511 return ENOENT; 512 512 } 513 device-> content = mtu;513 device->packet_dimension.content = mtu; 514 514 printf( "arp - device %d changed mtu to %d\n\n", device_id, mtu ); 515 515 fibril_rwlock_write_unlock( & arp_globals.lock ); -
uspace/srv/net/il/arp/arp.h
r536ded4 r91478aa 103 103 */ 104 104 hw_type_t hardware; 105 /** Reserved packet prefix length.105 /** Packet dimension. 106 106 */ 107 size_t prefix; 108 /** Maximal packet content length. 109 */ 110 size_t content; 111 /** Reserved packet suffix length. 112 */ 113 size_t suffix; 114 /** Packet address length. 115 * The hardware address length is used. 116 */ 117 size_t addr_len; 107 packet_dimension_t packet_dimension; 118 108 /** Actual device hardware address. 119 109 */ -
uspace/srv/net/il/ip/ip.c
r536ded4 r91478aa 152 152 int ip_device_state_message( device_id_t device_id, device_state_t state ); 153 153 154 /** Returns the device packet dimensions for sending. 155 * @param[in] phone The service module phone. 156 * @param[in] message The service specific message. 157 * @param[in] device_id The device identifier. 158 * @param[out] addr_len The minimum reserved address length. 159 * @param[out] prefix The minimum reserved prefix size. 160 * @param[out] content The maximum content size. 161 * @param[out] suffix The minimum reserved suffix size. 162 * @returns EOK on success. 163 */ 164 int ip_packet_size_message( device_id_t device_id, size_t * addr_len, size_t * prefix, size_t * content, size_t * suffix ); 165 154 166 /** Registers the transport layer protocol. 155 167 * The traffic of this protocol will be supplied using either the receive function or IPC message. … … 551 563 } 552 564 // get packet dimensions 553 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));554 if( ip_netif-> content < IP_MIN_CONTENT ){555 printf( "Maximum transmission unit %d bytes is too small, at least %d bytes are needed\n", ip_netif-> content, IP_MIN_CONTENT );556 ip_netif-> content = IP_MIN_CONTENT;565 ERROR_PROPAGATE( nil_packet_size_req( ip_netif->phone, ip_netif->device_id, & ip_netif->packet_dimension )); 566 if( ip_netif->packet_dimension.content < IP_MIN_CONTENT ){ 567 printf( "Maximum transmission unit %d bytes is too small, at least %d bytes are needed\n", ip_netif->packet_dimension.content, IP_MIN_CONTENT ); 568 ip_netif->packet_dimension.content = IP_MIN_CONTENT; 557 569 } 558 570 index = ip_netifs_add( & ip_globals.netifs, ip_netif->device_id, ip_netif ); … … 577 589 return ENOENT; 578 590 } 579 netif-> content = mtu;591 netif->packet_dimension.content = mtu; 580 592 printf( "ip - device %d changed mtu to %d\n\n", device_id, mtu ); 581 593 fibril_rwlock_write_unlock( & ip_globals.netifs_lock ); … … 768 780 pq_release( ip_globals.net_phone, packet_get_id( packet )); 769 781 }else{ 770 packet = ip_split_packet( packet, netif->p refix, netif->content, netif->suffix, netif->addr_len, error );782 packet = ip_split_packet( packet, netif->packet_dimension.prefix, netif->packet_dimension.content, netif->packet_dimension.suffix, netif->packet_dimension.addr_len, error ); 771 783 if( packet ){ 772 784 nil_send_msg( netif->phone, netif->device_id, packet, SERVICE_IP ); … … 891 903 return ERROR_CODE; 892 904 case NET_IL_PACKET_SPACE: 893 ERROR_PROPAGATE( ip_packet_size_ req( 0,IPC_GET_DEVICE( call ), IPC_SET_ADDR( answer ), IPC_SET_PREFIX( answer ), IPC_SET_CONTENT( answer ), IPC_SET_SUFFIX( answer )));905 ERROR_PROPAGATE( ip_packet_size_message( IPC_GET_DEVICE( call ), IPC_SET_ADDR( answer ), IPC_SET_PREFIX( answer ), IPC_SET_CONTENT( answer ), IPC_SET_SUFFIX( answer ))); 894 906 * answer_count = 3; 895 907 return EOK; … … 900 912 } 901 913 902 int ip_packet_size_req( int ip_phone, device_id_t device_id, size_t * addr_len, size_t * prefix, size_t * content, size_t * suffix ){ 914 int ip_packet_size_req( int ip_phone, device_id_t device_id, packet_dimension_ref packet_dimension ){ 915 if( ! packet_dimension ) return EBADMEM; 916 return ip_packet_size_message( device_id, & packet_dimension->addr_len, & packet_dimension->prefix, & packet_dimension->content, & packet_dimension->suffix ); 917 } 918 919 int ip_packet_size_message( device_id_t device_id, size_t * addr_len, size_t * prefix, size_t * content, size_t * suffix ){ 903 920 ip_netif_ref netif; 904 921 int index; … … 914 931 netif = ip_netifs_get_index( & ip_globals.netifs, index ); 915 932 if( netif ){ 916 if( netif-> addr_len > * addr_len ) * addr_len = netif->addr_len;917 if( netif->p refix > * prefix ) * prefix = netif->prefix;918 if( netif-> suffix > * suffix ) * suffix = netif->suffix;933 if( netif->packet_dimension.addr_len > * addr_len ) * addr_len = netif->packet_dimension.addr_len; 934 if( netif->packet_dimension.prefix > * prefix ) * prefix = netif->packet_dimension.prefix; 935 if( netif->packet_dimension.suffix > * suffix ) * suffix = netif->packet_dimension.suffix; 919 936 } 920 937 } … … 927 944 return ENOENT; 928 945 } 929 * addr_len = ( netif-> addr_len > IP_ADDR ) ? netif->addr_len : IP_ADDR;930 * prefix = netif->p refix + IP_PREFIX;931 * suffix = netif-> suffix + IP_SUFFIX;946 * addr_len = ( netif->packet_dimension.addr_len > IP_ADDR ) ? netif->packet_dimension.addr_len : IP_ADDR; 947 * prefix = netif->packet_dimension.prefix + IP_PREFIX; 948 * suffix = netif->packet_dimension.suffix + IP_SUFFIX; 932 949 } 933 950 fibril_rwlock_read_unlock( & ip_globals.netifs_lock ); -
uspace/srv/net/il/ip/ip.h
r536ded4 r91478aa 137 137 */ 138 138 ip_routes_t routes; 139 /** Reserved packet prefix length. 140 */ 141 size_t prefix; 142 /** Maximal packet content length. 143 */ 144 size_t content; 145 /** Reserved packet suffix length. 146 */ 147 size_t suffix; 148 /** Packet address length. 149 * The hardware address length is used. 150 */ 151 size_t addr_len; 139 /** Packet dimension. 140 */ 141 packet_dimension_t packet_dimension; 152 142 }; 153 143 -
uspace/srv/net/il/ip/ip_remote.c
r536ded4 r91478aa 72 72 } 73 73 74 int ip_packet_size_req( int ip_phone, device_id_t device_id, size_t * addr_len, size_t * prefix, size_t * content, size_t * suffix){75 return generic_packet_size_req( ip_phone, NET_IL_PACKET_SPACE, device_id, addr_len, prefix, content, suffix);74 int ip_packet_size_req( int ip_phone, device_id_t device_id, packet_dimension_ref packet_dimension ){ 75 return generic_packet_size_req( ip_phone, NET_IL_PACKET_SPACE, device_id, packet_dimension ); 76 76 } 77 77
Note:
See TracChangeset
for help on using the changeset viewer.