Lines Matching defs:sockaddr
1 /* $NetBSD: sockaddr.c,v 1.13 2025/01/26 16:25:38 christos Exp $ */
26 #include <isc/sockaddr.h>
118 isc_sockaddr_totext(const isc_sockaddr_t *sockaddr, isc_buffer_t *target) {
125 REQUIRE(sockaddr != NULL);
132 switch (sockaddr->type.sa.sa_family) {
135 ntohs(sockaddr->type.sin.sin_port));
139 ntohs(sockaddr->type.sin6.sin6_port));
148 isc_netaddr_fromsockaddr(&netaddr, sockaddr);
193 isc_sockaddr_hash_ex(isc_hash32_t *hash, const isc_sockaddr_t *sockaddr,
195 REQUIRE(sockaddr != NULL);
202 switch (sockaddr->type.sa.sa_family) {
204 s = (const uint8_t *)&sockaddr->type.sin.sin_addr;
205 len = sizeof(sockaddr->type.sin.sin_addr.s_addr);
207 p = ntohs(sockaddr->type.sin.sin_port);
211 in6 = &sockaddr->type.sin6.sin6_addr;
215 len = sizeof(sockaddr->type.sin.sin_addr.s_addr);
217 len = sizeof(sockaddr->type.sin6.sin6_addr);
220 p = ntohs(sockaddr->type.sin6.sin6_port);
234 isc_sockaddr_hash(const isc_sockaddr_t *sockaddr, bool address_only) {
239 isc_sockaddr_hash_ex(&hash, sockaddr, address_only);
245 isc_sockaddr_any(isc_sockaddr_t *sockaddr) {
246 memset(sockaddr, 0, sizeof(*sockaddr));
247 sockaddr->type.sin.sin_family = AF_INET;
248 sockaddr->type.sin.sin_addr.s_addr = INADDR_ANY;
249 sockaddr->type.sin.sin_port = 0;
250 sockaddr->length = sizeof(sockaddr->type.sin);
251 ISC_LINK_INIT(sockaddr, link);
255 isc_sockaddr_any6(isc_sockaddr_t *sockaddr) {
256 memset(sockaddr, 0, sizeof(*sockaddr));
257 sockaddr->type.sin6.sin6_family = AF_INET6;
258 sockaddr->type.sin6.sin6_addr = in6addr_any;
259 sockaddr->type.sin6.sin6_port = 0;
260 sockaddr->length = sizeof(sockaddr->type.sin6);
261 ISC_LINK_INIT(sockaddr, link);
265 isc_sockaddr_fromin(isc_sockaddr_t *sockaddr, const struct in_addr *ina,
267 memset(sockaddr, 0, sizeof(*sockaddr));
268 sockaddr->type.sin.sin_family = AF_INET;
269 sockaddr->type.sin.sin_addr = *ina;
270 sockaddr->type.sin.sin_port = htons(port);
271 sockaddr->length = sizeof(sockaddr->type.sin);
272 ISC_LINK_INIT(sockaddr, link);
276 isc_sockaddr_anyofpf(isc_sockaddr_t *sockaddr, int pf) {
279 isc_sockaddr_any(sockaddr);
282 isc_sockaddr_any6(sockaddr);
290 isc_sockaddr_fromin6(isc_sockaddr_t *sockaddr, const struct in6_addr *ina6,
292 memset(sockaddr, 0, sizeof(*sockaddr));
293 sockaddr->type.sin6.sin6_family = AF_INET6;
294 sockaddr->type.sin6.sin6_addr = *ina6;
295 sockaddr->type.sin6.sin6_port = htons(port);
296 sockaddr->length = sizeof(sockaddr->type.sin6);
297 ISC_LINK_INIT(sockaddr, link);
301 isc_sockaddr_v6fromin(isc_sockaddr_t *sockaddr, const struct in_addr *ina,
303 memset(sockaddr, 0, sizeof(*sockaddr));
304 sockaddr->type.sin6.sin6_family = AF_INET6;
305 sockaddr->type.sin6.sin6_addr.s6_addr[10] = 0xff;
306 sockaddr->type.sin6.sin6_addr.s6_addr[11] = 0xff;
307 memmove(&sockaddr->type.sin6.sin6_addr.s6_addr[12], ina, 4);
308 sockaddr->type.sin6.sin6_port = htons(port);
309 sockaddr->length = sizeof(sockaddr->type.sin6);
310 ISC_LINK_INIT(sockaddr, link);
314 isc_sockaddr_pf(const isc_sockaddr_t *sockaddr) {
316 * Get the protocol family of 'sockaddr'.
323 return sockaddr->type.sa.sa_family;
325 switch (sockaddr->type.sa.sa_family) {
332 (int)sockaddr->type.sa.sa_family);
338 isc_sockaddr_fromnetaddr(isc_sockaddr_t *sockaddr, const isc_netaddr_t *na,
340 memset(sockaddr, 0, sizeof(*sockaddr));
341 sockaddr->type.sin.sin_family = na->family;
344 sockaddr->length = sizeof(sockaddr->type.sin);
345 sockaddr->type.sin.sin_addr = na->type.in;
346 sockaddr->type.sin.sin_port = htons(port);
349 sockaddr->length = sizeof(sockaddr->type.sin6);
350 memmove(&sockaddr->type.sin6.sin6_addr, &na->type.in6, 16);
351 sockaddr->type.sin6.sin6_scope_id = isc_netaddr_getzone(na);
352 sockaddr->type.sin6.sin6_port = htons(port);
357 ISC_LINK_INIT(sockaddr, link);
361 isc_sockaddr_setport(isc_sockaddr_t *sockaddr, in_port_t port) {
362 switch (sockaddr->type.sa.sa_family) {
364 sockaddr->type.sin.sin_port = htons(port);
367 sockaddr->type.sin6.sin6_port = htons(port);
371 (int)sockaddr->type.sa.sa_family);
376 isc_sockaddr_getport(const isc_sockaddr_t *sockaddr) {
379 switch (sockaddr->type.sa.sa_family) {
381 port = ntohs(sockaddr->type.sin.sin_port);
384 port = ntohs(sockaddr->type.sin6.sin6_port);
388 (int)sockaddr->type.sa.sa_family);
395 isc_sockaddr_ismulticast(const isc_sockaddr_t *sockaddr) {
398 if (sockaddr->type.sa.sa_family == AF_INET ||
399 sockaddr->type.sa.sa_family == AF_INET6)
401 isc_netaddr_fromsockaddr(&netaddr, sockaddr);
408 isc_sockaddr_isexperimental(const isc_sockaddr_t *sockaddr) {
411 if (sockaddr->type.sa.sa_family == AF_INET) {
412 isc_netaddr_fromsockaddr(&netaddr, sockaddr);
419 isc_sockaddr_issitelocal(const isc_sockaddr_t *sockaddr) {
422 if (sockaddr->type.sa.sa_family == AF_INET6) {
423 isc_netaddr_fromsockaddr(&netaddr, sockaddr);
430 isc_sockaddr_islinklocal(const isc_sockaddr_t *sockaddr) {
433 if (sockaddr->type.sa.sa_family == AF_INET6) {
434 isc_netaddr_fromsockaddr(&netaddr, sockaddr);
441 isc_sockaddr_isnetzero(const isc_sockaddr_t *sockaddr) {
444 if (sockaddr->type.sa.sa_family == AF_INET) {
445 isc_netaddr_fromsockaddr(&netaddr, sockaddr);
452 isc_sockaddr_fromsockaddr(isc_sockaddr_t *isa, const struct sockaddr *sa) {
474 isc_sockaddr_disabled(const isc_sockaddr_t *sockaddr) {
475 if ((sockaddr->type.sa.sa_family == AF_INET &&
477 (sockaddr->type.sa.sa_family == AF_INET6 &&