! \brief inits an ip_addr pointer from a sockaddr structure*/
| 244 | |
| 245 | /*! \brief inits an ip_addr pointer from a sockaddr structure*/ |
| 246 | static inline void sockaddr2ip_addr(struct ip_addr* ip, const struct sockaddr* sa) |
| 247 | { |
| 248 | void *copyfrom; |
| 249 | |
| 250 | switch(sa->sa_family){ |
| 251 | case AF_INET: |
| 252 | ip->af=AF_INET; |
| 253 | ip->len=4; |
| 254 | copyfrom = &((struct sockaddr_in*)(void *)sa)->sin_addr; |
| 255 | break; |
| 256 | case AF_INET6: |
| 257 | ip->af=AF_INET6; |
| 258 | ip->len=16; |
| 259 | copyfrom = &((struct sockaddr_in6*)(void *)sa)->sin6_addr; |
| 260 | break; |
| 261 | default: |
| 262 | LM_CRIT("unknown address family %d\n", sa->sa_family); |
| 263 | /* clear the structure to prevent uninitialized warnings */ |
| 264 | ip->af=sa->sa_family; |
| 265 | return; |
| 266 | } |
| 267 | memcpy(ip->u.addr, copyfrom, ip->len); |
| 268 | } |
| 269 | |
| 270 | |
| 271 |
no outgoing calls
no test coverage detected