#include <config.h>#include <stdlib.h>#include <isc/magic.h>#include <isc/mem.h>#include <isc/mutex.h>#include <isc/net.h>#include <isc/refcount.h>#include <isc/result.h>#include <isc/string.h>#include <isc/types.h>#include <isc/util.h>#include <dns/types.h>#include <dns/portlist.h>Go to the source code of this file.
Data Structures | |
| struct | dns_element |
| struct | dns_portlist |
Defines | |
| #define | DNS_PORTLIST_MAGIC ISC_MAGIC('P','L','S','T') |
| #define | DNS_VALID_PORTLIST(p) ISC_MAGIC_VALID(p, DNS_PORTLIST_MAGIC) |
| #define | DNS_PL_INET 0x0001 |
| #define | DNS_PL_INET6 0x0002 |
| #define | DNS_PL_ALLOCATE 16 |
Typedefs | |
| typedef struct dns_element | dns_element_t |
Functions | |
| static int | compare (const void *arg1, const void *arg2) |
| isc_result_t | dns_portlist_create (isc_mem_t *mctx, dns_portlist_t **portlistp) |
| Create a port list. | |
| static dns_element_t * | find_port (dns_element_t *list, unsigned int len, in_port_t port) |
| isc_result_t | dns_portlist_add (dns_portlist_t *portlist, int af, in_port_t port) |
| Add the given <port,af> tuple to the portlist. | |
| void | dns_portlist_remove (dns_portlist_t *portlist, int af, in_port_t port) |
| Remove the given <port,af> tuple to the portlist. | |
| isc_boolean_t | dns_portlist_match (dns_portlist_t *portlist, int af, in_port_t port) |
| Find the given <port,af> tuple to the portlist. | |
| void | dns_portlist_attach (dns_portlist_t *portlist, dns_portlist_t **portlistp) |
| Attach to a port list. | |
| void | dns_portlist_detach (dns_portlist_t **portlistp) |
| Detach from a port list. | |
Definition in file portlist.c.
| #define DNS_PORTLIST_MAGIC ISC_MAGIC('P','L','S','T') |
| #define DNS_VALID_PORTLIST | ( | p | ) | ISC_MAGIC_VALID(p, DNS_PORTLIST_MAGIC) |
Definition at line 40 of file portlist.c.
Referenced by dns_portlist_add(), dns_portlist_attach(), dns_portlist_detach(), dns_portlist_match(), and dns_portlist_remove().
| #define DNS_PL_INET 0x0001 |
Definition at line 57 of file portlist.c.
Referenced by dns_portlist_add(), dns_portlist_match(), and dns_portlist_remove().
| #define DNS_PL_INET6 0x0002 |
Definition at line 58 of file portlist.c.
Referenced by dns_portlist_add(), dns_portlist_match(), and dns_portlist_remove().
| #define DNS_PL_ALLOCATE 16 |
| typedef struct dns_element dns_element_t |
| static int compare | ( | const void * | arg1, | |
| const void * | arg2 | |||
| ) | [static] |
Definition at line 62 of file portlist.c.
References dns_element::port.
Referenced by comparekeys(), dns_portlist_add(), dns_portlist_remove(), and sink_down().
| isc_result_t dns_portlist_create | ( | isc_mem_t * | mctx, | |
| dns_portlist_t ** | portlistp | |||
| ) |
Create a port list.
Requires:
Definition at line 74 of file portlist.c.
References dns_portlist::active, dns_portlist::allocated, DESTROYLOCK, DNS_PORTLIST_MAGIC, isc_mem_attach(), isc_mem_get, isc_mem_put, isc_mutex_init, ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_refcount_init(), dns_portlist::list, dns_portlist::lock, dns_portlist::magic, dns_portlist::mctx, dns_portlist::refcount, and REQUIRE.
| static dns_element_t* find_port | ( | dns_element_t * | list, | |
| unsigned int | len, | |||
| in_port_t | port | |||
| ) | [static] |
Definition at line 105 of file portlist.c.
References INSIST.
Referenced by dns_portlist_add(), dns_portlist_match(), and dns_portlist_remove().
| isc_result_t dns_portlist_add | ( | dns_portlist_t * | portlist, | |
| int | af, | |||
| in_port_t | port | |||
| ) |
Add the given <port,af> tuple to the portlist.
Requires:
Definition at line 138 of file portlist.c.
References dns_portlist::active, AF_INET6, dns_portlist::allocated, compare(), DNS_PL_ALLOCATE, DNS_PL_INET, DNS_PL_INET6, DNS_VALID_PORTLIST, find_port(), dns_element::flags, isc_mem_get, isc_mem_put, ISC_R_NOMEMORY, ISC_R_SUCCESS, dns_portlist::list, dns_portlist::lock, LOCK, dns_portlist::mctx, dns_element::port, REQUIRE, and UNLOCK.
| void dns_portlist_remove | ( | dns_portlist_t * | portlist, | |
| int | af, | |||
| in_port_t | port | |||
| ) |
Remove the given <port,af> tuple to the portlist.
Requires:
Definition at line 189 of file portlist.c.
References dns_portlist::active, AF_INET6, compare(), DNS_PL_INET, DNS_PL_INET6, DNS_VALID_PORTLIST, find_port(), dns_element::flags, dns_portlist::list, dns_portlist::lock, LOCK, REQUIRE, and UNLOCK.
| isc_boolean_t dns_portlist_match | ( | dns_portlist_t * | portlist, | |
| int | af, | |||
| in_port_t | port | |||
| ) |
Find the given <port,af> tuple to the portlist.
Requires:
Definition at line 215 of file portlist.c.
References dns_portlist::active, AF_INET6, DNS_PL_INET, DNS_PL_INET6, DNS_VALID_PORTLIST, find_port(), dns_element::flags, ISC_FALSE, ISC_TRUE, dns_portlist::list, dns_portlist::lock, LOCK, REQUIRE, and UNLOCK.
| void dns_portlist_attach | ( | dns_portlist_t * | portlist, | |
| dns_portlist_t ** | portlistp | |||
| ) |
Attach to a port list.
Requires:
Definition at line 236 of file portlist.c.
References DNS_VALID_PORTLIST, isc_refcount_increment, dns_portlist::refcount, and REQUIRE.
| void dns_portlist_detach | ( | dns_portlist_t ** | portlistp | ) |
Detach from a port list.
Requires:
Definition at line 246 of file portlist.c.
References dns_portlist::allocated, DESTROYLOCK, DNS_VALID_PORTLIST, isc_mem_put, isc_mem_putanddetach, isc_refcount_decrement, isc_refcount_destroy, dns_portlist::list, dns_portlist::lock, dns_portlist::magic, dns_portlist::mctx, dns_portlist::refcount, and REQUIRE.