Changeset 91478aa in mainline for uspace/srv/net/il


Ignore:
Timestamp:
2010-02-17T23:20:41Z (15 years ago)
Author:
Lukas Mejdrech <lukasmejdrech@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9b87284, ca2d142
Parents:
536ded4
Message:
  • unify packet dimension interfaces
Location:
uspace/srv/net/il
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/il/arp/arp.c

    r536ded4 r91478aa  
    337337                }
    338338                // 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 ))){
    340340                        fibril_rwlock_write_unlock( & arp_globals.lock );
    341341                        arp_protos_destroy( & device->protos );
     
    392392        // ARP packet content size = header + ( address + translation ) * 2
    393393        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 );
    396396        if( ! packet ) return NULL;
    397397        header = ( arp_header_ref ) packet_suffix( packet, length );
     
    472472                        memcpy( des_proto, src_proto, header->protocol_length );
    473473                        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 );
    475475                        memcpy( des_hw, hw_source->value, header->hardware_length );
    476476                        ERROR_PROPAGATE( packet_set_addr( packet, src_hw, des_hw, header->hardware_length ));
     
    511511                return ENOENT;
    512512        }
    513         device->content = mtu;
     513        device->packet_dimension.content = mtu;
    514514        printf( "arp - device %d changed mtu to %d\n\n", device_id, mtu );
    515515        fibril_rwlock_write_unlock( & arp_globals.lock );
  • uspace/srv/net/il/arp/arp.h

    r536ded4 r91478aa  
    103103         */
    104104        hw_type_t                       hardware;
    105         /** Reserved packet prefix length.
     105        /** Packet dimension.
    106106         */
    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;
    118108        /** Actual device hardware address.
    119109         */
  • uspace/srv/net/il/ip/ip.c

    r536ded4 r91478aa  
    152152int     ip_device_state_message( device_id_t device_id, device_state_t state );
    153153
     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 */
     164int     ip_packet_size_message( device_id_t device_id, size_t * addr_len, size_t * prefix, size_t * content, size_t * suffix );
     165
    154166/** Registers the transport layer protocol.
    155167 *  The traffic of this protocol will be supplied using either the receive function or IPC message.
     
    551563        }
    552564        // 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;
    557569        }
    558570        index = ip_netifs_add( & ip_globals.netifs, ip_netif->device_id, ip_netif );
     
    577589                return ENOENT;
    578590        }
    579         netif->content = mtu;
     591        netif->packet_dimension.content = mtu;
    580592        printf( "ip - device %d changed mtu to %d\n\n", device_id, mtu );
    581593        fibril_rwlock_write_unlock( & ip_globals.netifs_lock );
     
    768780                pq_release( ip_globals.net_phone, packet_get_id( packet ));
    769781        }else{
    770                 packet = ip_split_packet( packet, netif->prefix, 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 );
    771783                if( packet ){
    772784                        nil_send_msg( netif->phone, netif->device_id, packet, SERVICE_IP );
     
    891903                        return ERROR_CODE;
    892904                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 )));
    894906                        * answer_count = 3;
    895907                        return EOK;
     
    900912}
    901913
    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 ){
     914int 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
     919int ip_packet_size_message( device_id_t device_id, size_t * addr_len, size_t * prefix, size_t * content, size_t * suffix ){
    903920        ip_netif_ref    netif;
    904921        int                             index;
     
    914931                        netif = ip_netifs_get_index( & ip_globals.netifs, index );
    915932                        if( netif ){
    916                                 if( netif->addr_len > * addr_len ) * addr_len = netif->addr_len;
    917                                 if( netif->prefix > * 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;
    919936                        }
    920937                }
     
    927944                        return ENOENT;
    928945                }
    929                 * addr_len = ( netif->addr_len > IP_ADDR ) ? netif->addr_len : IP_ADDR;
    930                 * prefix = netif->prefix + 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;
    932949        }
    933950        fibril_rwlock_read_unlock( & ip_globals.netifs_lock );
  • uspace/srv/net/il/ip/ip.h

    r536ded4 r91478aa  
    137137         */
    138138        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;
    152142};
    153143
  • uspace/srv/net/il/ip/ip_remote.c

    r536ded4 r91478aa  
    7272}
    7373
    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 );
     74int 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 );
    7676}
    7777
Note: See TracChangeset for help on using the changeset viewer.