Lines Matching defs:sockaddr

32 #include <isc/sockaddr.h>
114 isc_sockaddr_totext(const isc_sockaddr_t *sockaddr, isc_buffer_t *target) {
121 REQUIRE(sockaddr != NULL);
128 switch (sockaddr->type.sa.sa_family) {
130 snprintf(pbuf, sizeof(pbuf), "%u", ntohs(sockaddr->type.sin.sin_port));
133 snprintf(pbuf, sizeof(pbuf), "%u", ntohs(sockaddr->type.sin6.sin6_port));
137 plen = (unsigned int)strlen(sockaddr->type.sunix.sun_path);
141 isc_buffer_putmem(target, sockaddr->type.sunix.sun_path, plen);
159 isc_netaddr_fromsockaddr(&netaddr, sockaddr);
205 isc_sockaddr_hash(const isc_sockaddr_t *sockaddr, isc_boolean_t address_only) {
213 REQUIRE(sockaddr != NULL);
215 switch (sockaddr->type.sa.sa_family) {
217 s = (const unsigned char *)&sockaddr->type.sin.sin_addr;
218 p = ntohs(sockaddr->type.sin.sin_port);
219 length = sizeof(sockaddr->type.sin.sin_addr.s_addr);
222 in6 = &sockaddr->type.sin6.sin6_addr;
225 length = sizeof(sockaddr->type.sin.sin_addr.s_addr);
228 length = sizeof(sockaddr->type.sin6.sin6_addr);
230 p = ntohs(sockaddr->type.sin6.sin6_port);
239 (int)sockaddr->type.sa.sa_family);
240 s = (const unsigned char *)&sockaddr->type;
241 length = sockaddr->length;
256 isc_sockaddr_any(isc_sockaddr_t *sockaddr)
258 memset(sockaddr, 0, sizeof(*sockaddr));
259 sockaddr->type.sin.sin_family = AF_INET;
261 sockaddr->type.sin.sin_len = sizeof(sockaddr->type.sin);
263 sockaddr->type.sin.sin_addr.s_addr = INADDR_ANY;
264 sockaddr->type.sin.sin_port = 0;
265 sockaddr->length = sizeof(sockaddr->type.sin);
266 ISC_LINK_INIT(sockaddr, link);
270 isc_sockaddr_any6(isc_sockaddr_t *sockaddr)
272 memset(sockaddr, 0, sizeof(*sockaddr));
273 sockaddr->type.sin6.sin6_family = AF_INET6;
275 sockaddr->type.sin6.sin6_len = sizeof(sockaddr->type.sin6);
277 sockaddr->type.sin6.sin6_addr = in6addr_any;
278 sockaddr->type.sin6.sin6_port = 0;
279 sockaddr->length = sizeof(sockaddr->type.sin6);
280 ISC_LINK_INIT(sockaddr, link);
284 isc_sockaddr_fromin(isc_sockaddr_t *sockaddr, const struct in_addr *ina,
287 memset(sockaddr, 0, sizeof(*sockaddr));
288 sockaddr->type.sin.sin_family = AF_INET;
290 sockaddr->type.sin.sin_len = sizeof(sockaddr->type.sin);
292 sockaddr->type.sin.sin_addr = *ina;
293 sockaddr->type.sin.sin_port = htons(port);
294 sockaddr->length = sizeof(sockaddr->type.sin);
295 ISC_LINK_INIT(sockaddr, link);
299 isc_sockaddr_anyofpf(isc_sockaddr_t *sockaddr, int pf) {
302 isc_sockaddr_any(sockaddr);
305 isc_sockaddr_any6(sockaddr);
313 isc_sockaddr_fromin6(isc_sockaddr_t *sockaddr, const struct in6_addr *ina6,
316 memset(sockaddr, 0, sizeof(*sockaddr));
317 sockaddr->type.sin6.sin6_family = AF_INET6;
319 sockaddr->type.sin6.sin6_len = sizeof(sockaddr->type.sin6);
321 sockaddr->type.sin6.sin6_addr = *ina6;
322 sockaddr->type.sin6.sin6_port = htons(port);
323 sockaddr->length = sizeof(sockaddr->type.sin6);
324 ISC_LINK_INIT(sockaddr, link);
328 isc_sockaddr_v6fromin(isc_sockaddr_t *sockaddr, const struct in_addr *ina,
331 memset(sockaddr, 0, sizeof(*sockaddr));
332 sockaddr->type.sin6.sin6_family = AF_INET6;
334 sockaddr->type.sin6.sin6_len = sizeof(sockaddr->type.sin6);
336 sockaddr->type.sin6.sin6_addr.s6_addr[10] = 0xff;
337 sockaddr->type.sin6.sin6_addr.s6_addr[11] = 0xff;
338 memcpy(&sockaddr->type.sin6.sin6_addr.s6_addr[12], ina, 4);
339 sockaddr->type.sin6.sin6_port = htons(port);
340 sockaddr->length = sizeof(sockaddr->type.sin6);
341 ISC_LINK_INIT(sockaddr, link);
345 isc_sockaddr_pf(const isc_sockaddr_t *sockaddr) {
348 * Get the protocol family of 'sockaddr'.
355 return (sockaddr->type.sa.sa_family);
357 switch (sockaddr->type.sa.sa_family) {
367 (int)sockaddr->type.sa.sa_family);
373 isc_sockaddr_fromnetaddr(isc_sockaddr_t *sockaddr, const isc_netaddr_t *na,
376 memset(sockaddr, 0, sizeof(*sockaddr));
377 sockaddr->type.sin.sin_family = (short)na->family;
380 sockaddr->length = sizeof(sockaddr->type.sin);
382 sockaddr->type.sin.sin_len = sizeof(sockaddr->type.sin);
384 sockaddr->type.sin.sin_addr = na->type.in;
385 sockaddr->type.sin.sin_port = htons(port);
388 sockaddr->length = sizeof(sockaddr->type.sin6);
390 sockaddr->type.sin6.sin6_len = sizeof(sockaddr->type.sin6);
392 memcpy(&sockaddr->type.sin6.sin6_addr, &na->type.in6, 16);
394 sockaddr->type.sin6.sin6_scope_id = isc_netaddr_getzone(na);
396 sockaddr->type.sin6.sin6_port = htons(port);
401 ISC_LINK_INIT(sockaddr, link);
405 isc_sockaddr_setport(isc_sockaddr_t *sockaddr, in_port_t port) {
406 switch (sockaddr->type.sa.sa_family) {
408 sockaddr->type.sin.sin_port = htons(port);
411 sockaddr->type.sin6.sin6_port = htons(port);
419 (int)sockaddr->type.sa.sa_family);
424 isc_sockaddr_getport(const isc_sockaddr_t *sockaddr) {
427 switch (sockaddr->type.sa.sa_family) {
429 port = ntohs(sockaddr->type.sin.sin_port);
432 port = ntohs(sockaddr->type.sin6.sin6_port);
440 (int)sockaddr->type.sa.sa_family);
447 isc_sockaddr_ismulticast(const isc_sockaddr_t *sockaddr) {
450 if (sockaddr->type.sa.sa_family == AF_INET ||
451 sockaddr->type.sa.sa_family == AF_INET6) {
452 isc_netaddr_fromsockaddr(&netaddr, sockaddr);
459 isc_sockaddr_isexperimental(const isc_sockaddr_t *sockaddr) {
462 if (sockaddr->type.sa.sa_family == AF_INET) {
463 isc_netaddr_fromsockaddr(&netaddr, sockaddr);
470 isc_sockaddr_issitelocal(const isc_sockaddr_t *sockaddr) {
473 if (sockaddr->type.sa.sa_family == AF_INET6) {
474 isc_netaddr_fromsockaddr(&netaddr, sockaddr);
481 isc_sockaddr_islinklocal(const isc_sockaddr_t *sockaddr) {
484 if (sockaddr->type.sa.sa_family == AF_INET6) {
485 isc_netaddr_fromsockaddr(&netaddr, sockaddr);
492 isc_sockaddr_frompath(isc_sockaddr_t *sockaddr, const char *path) {
494 if (strlen(path) >= sizeof(sockaddr->type.sunix.sun_path))
496 memset(sockaddr, 0, sizeof(*sockaddr));
497 sockaddr->length = sizeof(sockaddr->type.sunix);
498 sockaddr->type.sunix.sun_family = AF_UNIX;
500 sockaddr->type.sunix.sun_len =
501 (unsigned char)sizeof(sockaddr->type.sunix);
503 strcpy(sockaddr->type.sunix.sun_path, path);
506 UNUSED(sockaddr);