| 5268 | } |
| 5269 | |
| 5270 | uint32_t |
| 5271 | sctp_get_ifa_hash_val(struct sockaddr *addr) |
| 5272 | { |
| 5273 | switch (addr->sa_family) { |
| 5274 | #ifdef INET |
| 5275 | case AF_INET: |
| 5276 | { |
| 5277 | struct sockaddr_in *sin; |
| 5278 | |
| 5279 | sin = (struct sockaddr_in *)addr; |
| 5280 | return (sin->sin_addr.s_addr ^ (sin->sin_addr.s_addr >> 16)); |
| 5281 | } |
| 5282 | #endif |
| 5283 | #ifdef INET6 |
| 5284 | case AF_INET6: |
| 5285 | { |
| 5286 | struct sockaddr_in6 *sin6; |
| 5287 | uint32_t hash_of_addr; |
| 5288 | |
| 5289 | sin6 = (struct sockaddr_in6 *)addr; |
| 5290 | hash_of_addr = (sin6->sin6_addr.s6_addr32[0] + |
| 5291 | sin6->sin6_addr.s6_addr32[1] + |
| 5292 | sin6->sin6_addr.s6_addr32[2] + |
| 5293 | sin6->sin6_addr.s6_addr32[3]); |
| 5294 | hash_of_addr = (hash_of_addr ^ (hash_of_addr >> 16)); |
| 5295 | return (hash_of_addr); |
| 5296 | } |
| 5297 | #endif |
| 5298 | default: |
| 5299 | break; |
| 5300 | } |
| 5301 | return (0); |
| 5302 | } |
| 5303 | |
| 5304 | struct sctp_ifa * |
| 5305 | sctp_find_ifa_by_addr(struct sockaddr *addr, uint32_t vrf_id, int holds_lock) |
no outgoing calls
no test coverage detected