Home | History | Annotate | Line # | Download | only in isc
      1 /*	$NetBSD: types.h,v 1.14 2025/01/27 02:16:05 christos Exp $	*/
      2 
      3 /*
      4  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
      5  *
      6  * SPDX-License-Identifier: MPL-2.0
      7  *
      8  * This Source Code Form is subject to the terms of the Mozilla Public
      9  * License, v. 2.0. If a copy of the MPL was not distributed with this
     10  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
     11  *
     12  * See the COPYRIGHT file distributed with this work for additional
     13  * information regarding copyright ownership.
     14  */
     15 
     16 #pragma once
     17 
     18 #include <isc/atomic.h>
     19 #include <isc/result.h>
     20 
     21 /*! \file isc/types.h
     22  * \brief
     23  * OS-specific types, from the OS-specific include directories.
     24  */
     25 #include <limits.h>
     26 #include <stdbool.h>
     27 #include <stddef.h>
     28 #include <stdint.h>
     29 
     30 /*
     31  * XXXDCL This is just for ISC_LIST and ISC_LINK, but gets all of the other
     32  * list macros too.
     33  */
     34 #include <isc/list.h>
     35 
     36 /* Core Types.  Alphabetized by defined type. */
     37 
     38 typedef struct isc_buffer isc_buffer_t;			  /*%< Buffer */
     39 typedef ISC_LIST(isc_buffer_t) isc_bufferlist_t;	  /*%< Buffer List */
     40 typedef struct isc_constregion	   isc_constregion_t;	  /*%< Const region */
     41 typedef struct isc_consttextregion isc_consttextregion_t; /*%< Const Text Region
     42 							   */
     43 typedef struct isc_counter isc_counter_t;		  /*%< Counter */
     44 typedef struct isc_hash	   isc_hash_t;			  /*%< Hash */
     45 typedef struct isc_httpd   isc_httpd_t;			  /*%< HTTP client */
     46 typedef void(isc_httpdfree_t)(isc_buffer_t *, void *); /*%< HTTP free function
     47 							*/
     48 typedef struct isc_httpdmgr isc_httpdmgr_t;	       /*%< HTTP manager */
     49 typedef struct isc_httpdurl isc_httpdurl_t;	       /*%< HTTP URL */
     50 typedef void(isc_httpdondestroy_t)(void *); /*%< Callback on destroying httpd */
     51 typedef struct isc_interface	 isc_interface_t;     /*%< Interface */
     52 typedef struct isc_interfaceiter isc_interfaceiter_t; /*%< Interface Iterator */
     53 typedef struct isc_lex		 isc_lex_t;	      /*%< Lex */
     54 typedef struct isc_log		 isc_log_t;	      /*%< Log */
     55 typedef struct isc_logcategory	 isc_logcategory_t;   /*%< Log Category */
     56 typedef struct isc_logconfig	 isc_logconfig_t;     /*%< Log Configuration */
     57 typedef struct isc_logmodule	 isc_logmodule_t;     /*%< Log Module */
     58 typedef struct isc_loop		 isc_loop_t;	      /*%< Event loop */
     59 typedef struct isc_loopmgr	 isc_loopmgr_t;	      /*%< Event loop manager */
     60 typedef struct isc_mem		 isc_mem_t;	      /*%< Memory */
     61 typedef struct isc_mempool	 isc_mempool_t;	      /*%< Memory Pool */
     62 typedef struct isc_netaddr	 isc_netaddr_t;	      /*%< Net Address */
     63 typedef struct isc_netprefix	 isc_netprefix_t;     /*%< Net Prefix */
     64 typedef struct isc_nm		 isc_nm_t;	      /*%< Network manager */
     65 typedef struct isc_nmsocket	 isc_nmsocket_t; /*%< Network manager socket */
     66 typedef struct isc_nmhandle	 isc_nmhandle_t; /*%< Network manager handle */
     67 typedef struct isc_portset	 isc_portset_t;	 /*%< Port Set */
     68 typedef struct isc_quota	 isc_quota_t;	 /*%< Quota */
     69 typedef struct isc_ratelimiter	 isc_ratelimiter_t;  /*%< Rate Limiter */
     70 typedef struct isc_region	 isc_region_t;	     /*%< Region */
     71 typedef struct isc_rlevent	 isc_rlevent_t;	     /*%< Rate Limiter Event */
     72 typedef struct isc_signal	 isc_signal_t;	     /*%< Signal handler */
     73 typedef struct isc_sockaddr	 isc_sockaddr_t;     /*%< Socket Address */
     74 typedef ISC_LIST(isc_sockaddr_t) isc_sockaddrlist_t; /*%< Socket Address List
     75 						      * */
     76 typedef struct isc_stats      isc_stats_t;	     /*%< Statistics */
     77 #ifdef _LP64
     78 typedef int_fast64_t	      isc_statscounter_t;
     79 typedef atomic_int_fast64_t   isc_atomic_statscounter_t;
     80 #else
     81 typedef int_fast32_t	      isc_statscounter_t;
     82 typedef atomic_int_fast32_t   isc_atomic_statscounter_t;
     83 #endif
     84 typedef struct isc_symtab     isc_symtab_t;	/*%< Symbol Table */
     85 typedef struct isc_textregion isc_textregion_t; /*%< Text Region */
     86 typedef struct isc_time	      isc_time_t;	/*%< Time */
     87 typedef struct isc_timer      isc_timer_t;	/*%< Timer */
     88 typedef struct isc_work	      isc_work_t;	/*%< Work offloaded to an
     89 						 *   external thread */
     90 
     91 #if HAVE_LIBNGHTTP2
     92 typedef struct isc_nm_http_endpoints isc_nm_http_endpoints_t;
     93 /*%< HTTP endpoints set */
     94 #endif /* HAVE_LIBNGHTTP2 */
     95 
     96 /*% Statistics formats (text file or XML) */
     97 typedef enum {
     98 	isc_statsformat_file,
     99 	isc_statsformat_xml,
    100 	isc_statsformat_json
    101 } isc_statsformat_t;
    102 
    103 typedef enum isc_nmsocket_type {
    104 	isc_nm_nonesocket = 0,
    105 	isc_nm_udpsocket = 1 << 1,
    106 	isc_nm_tcpsocket = 1 << 2,
    107 	isc_nm_tlssocket = 1 << 3,
    108 	isc_nm_httpsocket = 1 << 4,
    109 	isc_nm_streamdnssocket = 1 << 5,
    110 	isc_nm_proxystreamsocket = 1 << 6,
    111 	isc_nm_proxyudpsocket = 1 << 7,
    112 	isc_nm_maxsocket,
    113 
    114 	isc_nm_udplistener, /* Aggregate of nm_udpsocks */
    115 	isc_nm_tcplistener,
    116 	isc_nm_tlslistener,
    117 	isc_nm_httplistener,
    118 	isc_nm_streamdnslistener,
    119 	isc_nm_proxystreamlistener,
    120 	isc_nm_proxyudplistener
    121 } isc_nmsocket_type;
    122 
    123 typedef isc_nmsocket_type isc_nmsocket_type_t;
    124