Subversion Repositories HelenOS

Rev

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

Rev 4731 Rev 4738
Line 59... Line 59...
59
    if( addrlen < sizeof( struct sockaddr )) return EINVAL;
59
    if( addrlen < sizeof( struct sockaddr )) return EINVAL;
60
    switch( addr->sa_family ){
60
    switch( addr->sa_family ){
61
        case AF_INET:
61
        case AF_INET:
62
            if( addrlen != sizeof( struct sockaddr_in )) return EINVAL;
62
            if( addrlen != sizeof( struct sockaddr_in )) return EINVAL;
63
            address_in = ( struct sockaddr_in * ) addr;
63
            address_in = ( struct sockaddr_in * ) addr;
64
            * port = address_in->sin_port;
64
            * port = ntohs( address_in->sin_port );
65
            break;
65
            break;
66
        case AF_INET6:
66
        case AF_INET6:
67
            if( addrlen != sizeof( struct sockaddr_in6 )) return EINVAL;
67
            if( addrlen != sizeof( struct sockaddr_in6 )) return EINVAL;
68
            address_in6 = ( struct sockaddr_in6 * ) addr;
68
            address_in6 = ( struct sockaddr_in6 * ) addr;
69
            * port = address_in6->sin6_port;
69
            * port = ntohs( address_in6->sin6_port );
70
            break;
70
            break;
71
        default:
71
        default:
72
            return EAFNOSUPPORT;
72
            return EAFNOSUPPORT;
73
    }
73
    }
74
    return EOK;
74
    return EOK;
75
}
75
}
76
 
76
 
77
 
-
 
78
int tl_set_address_port( struct sockaddr * addr, int addrlen, uint16_t port ){
77
int tl_set_address_port( struct sockaddr * addr, int addrlen, uint16_t port ){
79
    struct sockaddr_in *    address_in;
78
    struct sockaddr_in *    address_in;
80
    struct sockaddr_in6 *   address_in6;
79
    struct sockaddr_in6 *   address_in6;
81
    size_t                  length;
80
    size_t                  length;
82
 
81
 
Line 85... Line 84...
85
    if( length < sizeof( struct sockaddr )) return EINVAL;
84
    if( length < sizeof( struct sockaddr )) return EINVAL;
86
    switch( addr->sa_family ){
85
    switch( addr->sa_family ){
87
        case AF_INET:
86
        case AF_INET:
88
            if( length != sizeof( struct sockaddr_in )) return EINVAL;
87
            if( length != sizeof( struct sockaddr_in )) return EINVAL;
89
            address_in = ( struct sockaddr_in * ) addr;
88
            address_in = ( struct sockaddr_in * ) addr;
90
            address_in->sin_port = port;
89
            address_in->sin_port = htons( port );
91
            return EOK;
90
            return EOK;
92
        case AF_INET6:
91
        case AF_INET6:
93
            if( length != sizeof( struct sockaddr_in6 )) return EINVAL;
92
            if( length != sizeof( struct sockaddr_in6 )) return EINVAL;
94
            address_in6 = ( struct sockaddr_in6 * ) addr;
93
            address_in6 = ( struct sockaddr_in6 * ) addr;
95
            address_in6->sin6_port = port;
94
            address_in6->sin6_port = htons( port );
96
            return EOK;
95
            return EOK;
97
        default:
96
        default:
98
            return EAFNOSUPPORT;
97
            return EAFNOSUPPORT;
99
    }
98
    }
100
}
99
}