Rev 4728 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4728 | Rev 4743 | ||
|---|---|---|---|
| Line 115... | Line 115... | ||
| 115 | int ip_client_get_pseudo_header( ip_protocol_t protocol, struct sockaddr * src, socklen_t srclen, struct sockaddr * dest, socklen_t destlen, size_t data_length, ip_pseudo_header_ref * header, size_t * headerlen ){ |
115 | int ip_client_get_pseudo_header( ip_protocol_t protocol, struct sockaddr * src, socklen_t srclen, struct sockaddr * dest, socklen_t destlen, size_t data_length, ip_pseudo_header_ref * header, size_t * headerlen ){ |
| 116 | ipv4_pseudo_header_ref header_in; |
116 | ipv4_pseudo_header_ref header_in; |
| 117 | struct sockaddr_in * address_in; |
117 | struct sockaddr_in * address_in; |
| 118 | 118 | ||
| 119 | if( !( header && headerlen )) return EBADMEM; |
119 | if( !( header && headerlen )) return EBADMEM; |
| 120 | if( !( src && dest && ( srclen >= sizeof( struct sockaddr )) && ( srclen == destlen ) && ( src->sa_family == dest->sa_family ))) return EINVAL; |
120 | if( !( src && dest && ( srclen > 0 ) && (( size_t ) srclen >= sizeof( struct sockaddr )) && ( srclen == destlen ) && ( src->sa_family == dest->sa_family ))) return EINVAL; |
| 121 | switch( src->sa_family ){ |
121 | switch( src->sa_family ){ |
| 122 | case AF_INET: |
122 | case AF_INET: |
| 123 | if( srclen != sizeof( struct sockaddr_in )) return EINVAL; |
123 | if( srclen != sizeof( struct sockaddr_in )) return EINVAL; |
| 124 | * headerlen = sizeof( * header_in ); |
124 | * headerlen = sizeof( * header_in ); |
| 125 | header_in = ( ipv4_pseudo_header_ref ) malloc( * headerlen ); |
125 | header_in = ( ipv4_pseudo_header_ref ) malloc( * headerlen ); |