Changes in uspace/srv/net/inet.c [aadf01e:21580dd] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified uspace/srv/net/inet.c

    raadf01e r21580dd  
    4545#include "include/socket_codes.h"
    4646
    47 int inet_pton(uint16_t family, const char * address, uint8_t * data){
    48         const char * next;
    49         char * last;
    50         int index;
    51         int count;
    52         int base;
    53         size_t bytes;
    54         size_t shift;
    55         unsigned long value;
     47int inet_pton( uint16_t family, const char * address, uint8_t * data ){
     48        const char *    next;
     49        char *                  last;
     50        int                             index;
     51        int                             count;
     52        int                             base;
     53        size_t                  bytes;
     54        size_t                  shift;
     55        unsigned long   value;
    5656
    57         if(! data){
    58                 return EINVAL;
    59         }
    60         switch(family){
     57        if( ! data ) return EINVAL;
     58        switch( family ){
    6159                case AF_INET:
    6260                        count = 4;
     
    7270                        return ENOTSUP;
    7371        }
    74         if(! address){
    75                 bzero(data, count);
     72        if( ! address ){
     73                bzero( data, count );
    7674                return ENOENT;
    7775        }
     
    7977        index = 0;
    8078        do{
    81                 if(next && (*next)){
    82                         if(index){
    83                                 ++ next;
    84                         }
    85                         value = strtoul(next, &last, base);
     79                if( next && ( * next )){
     80                        if( index ) ++ next;
     81                        value = strtoul( next, & last, base );
    8682                        next = last;
    8783                        shift = bytes - 1;
    8884                        do{
    8985                                // like little endian
    90                                 data[index + shift] = value;
     86                                data[ index + shift ] = value;
    9187                                value >>= 8;
    92                         }while(shift --);
     88                        }while( shift -- );
    9389                        index += bytes;
    9490                }else{
    95                         bzero(data + index, count - index);
     91                        bzero( data + index, count - index );
    9692                        return EOK;
    9793                }
    98         }while(index < count);
     94        }while( index < count );
    9995        return EOK;
    10096}
    10197
    102 int inet_ntop(uint16_t family, const uint8_t * data, char * address, size_t length){
    103         if((! data) || (! address)){
    104                 return EINVAL;
    105         }
    106         switch(family){
    107                 case AF_INET:
    108                         if(length < INET_ADDRSTRLEN){
    109                                 return ENOMEM;
    110                         }
    111                         snprintf(address, length, "%hhu.%hhu.%hhu.%hhu", data[0], data[1], data[2], data[3]);
    112                         return EOK;
    113                 case AF_INET6:
    114                         if(length < INET6_ADDRSTRLEN){
    115                                 return ENOMEM;
    116                         }
    117                         snprintf(address, length, "%hhx%hhx:%hhx%hhx:%hhx%hhx:%hhx%hhx:%hhx%hhx:%hhx%hhx:%hhx%hhx:%hhx%hhx", data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15]);
    118                         return EOK;
    119                 default:
    120                         return ENOTSUP;
     98int inet_ntop( uint16_t family, const uint8_t * data, char * address, size_t length ){
     99        if(( ! data ) || ( ! address )) return EINVAL;
     100        switch( family ){
     101                case AF_INET:   if( length < INET_ADDRSTRLEN ) return ENOMEM;
     102                                                snprintf( address, length, "%hhu.%hhu.%hhu.%hhu", data[ 0 ], data[ 1 ], data[ 2 ], data[ 3 ] );
     103                                                return EOK;
     104                case AF_INET6:  if( length < INET6_ADDRSTRLEN ) return ENOMEM;
     105                                                snprintf( address, length, "%hhx%hhx:%hhx%hhx:%hhx%hhx:%hhx%hhx:%hhx%hhx:%hhx%hhx:%hhx%hhx:%hhx%hhx", data[ 0 ], data[ 1 ], data[ 2 ], data[ 3 ], data[ 4 ], data[ 5 ], data[ 6 ], data[ 7 ], data[ 8 ], data[ 9 ], data[ 10 ], data[ 11 ], data[ 12 ], data[ 13 ], data[ 14 ], data[ 15 ] );
     106                                                return EOK;
     107                default:                return ENOTSUP;
    121108        }
    122109}
Note: See TracChangeset for help on using the changeset viewer.