1*83ee113eSDavid van Moolenbroek /* $NetBSD: isclib.h,v 1.1.1.2 2014/07/12 11:57:57 spz Exp $ */ 2*83ee113eSDavid van Moolenbroek /* isclib.h 3*83ee113eSDavid van Moolenbroek 4*83ee113eSDavid van Moolenbroek connections to the isc and dns libraries */ 5*83ee113eSDavid van Moolenbroek 6*83ee113eSDavid van Moolenbroek /* 7*83ee113eSDavid van Moolenbroek * Copyright (c) 2009,2013 by Internet Systems Consortium, Inc. ("ISC") 8*83ee113eSDavid van Moolenbroek * 9*83ee113eSDavid van Moolenbroek * Permission to use, copy, modify, and distribute this software for any 10*83ee113eSDavid van Moolenbroek * purpose with or without fee is hereby granted, provided that the above 11*83ee113eSDavid van Moolenbroek * copyright notice and this permission notice appear in all copies. 12*83ee113eSDavid van Moolenbroek * 13*83ee113eSDavid van Moolenbroek * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES 14*83ee113eSDavid van Moolenbroek * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 15*83ee113eSDavid van Moolenbroek * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR 16*83ee113eSDavid van Moolenbroek * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 17*83ee113eSDavid van Moolenbroek * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 18*83ee113eSDavid van Moolenbroek * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 19*83ee113eSDavid van Moolenbroek * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 20*83ee113eSDavid van Moolenbroek * 21*83ee113eSDavid van Moolenbroek * Internet Systems Consortium, Inc. 22*83ee113eSDavid van Moolenbroek * 950 Charter Street 23*83ee113eSDavid van Moolenbroek * Redwood City, CA 94063 24*83ee113eSDavid van Moolenbroek * <info@isc.org> 25*83ee113eSDavid van Moolenbroek * http://www.isc.org/ 26*83ee113eSDavid van Moolenbroek * 27*83ee113eSDavid van Moolenbroek */ 28*83ee113eSDavid van Moolenbroek 29*83ee113eSDavid van Moolenbroek #ifndef ISCLIB_H 30*83ee113eSDavid van Moolenbroek #define ISCLIB_H 31*83ee113eSDavid van Moolenbroek 32*83ee113eSDavid van Moolenbroek #include "config.h" 33*83ee113eSDavid van Moolenbroek 34*83ee113eSDavid van Moolenbroek #include <syslog.h> 35*83ee113eSDavid van Moolenbroek 36*83ee113eSDavid van Moolenbroek #define MAXWIRE 256 37*83ee113eSDavid van Moolenbroek 38*83ee113eSDavid van Moolenbroek #include <sys/types.h> 39*83ee113eSDavid van Moolenbroek #include <sys/socket.h> 40*83ee113eSDavid van Moolenbroek 41*83ee113eSDavid van Moolenbroek #include <netinet/in.h> 42*83ee113eSDavid van Moolenbroek 43*83ee113eSDavid van Moolenbroek #include <arpa/inet.h> 44*83ee113eSDavid van Moolenbroek 45*83ee113eSDavid van Moolenbroek #include <unistd.h> 46*83ee113eSDavid van Moolenbroek #include <ctype.h> 47*83ee113eSDavid van Moolenbroek #include <stdio.h> 48*83ee113eSDavid van Moolenbroek #include <stdlib.h> 49*83ee113eSDavid van Moolenbroek #include <string.h> 50*83ee113eSDavid van Moolenbroek #include <netdb.h> 51*83ee113eSDavid van Moolenbroek 52*83ee113eSDavid van Moolenbroek #include <isc/buffer.h> 53*83ee113eSDavid van Moolenbroek #include <isc/lex.h> 54*83ee113eSDavid van Moolenbroek #include <isc/lib.h> 55*83ee113eSDavid van Moolenbroek #include <isc/app.h> 56*83ee113eSDavid van Moolenbroek #include <isc/mem.h> 57*83ee113eSDavid van Moolenbroek #include <isc/parseint.h> 58*83ee113eSDavid van Moolenbroek #include <isc/socket.h> 59*83ee113eSDavid van Moolenbroek #include <isc/sockaddr.h> 60*83ee113eSDavid van Moolenbroek #include <isc/task.h> 61*83ee113eSDavid van Moolenbroek #include <isc/timer.h> 62*83ee113eSDavid van Moolenbroek #include <isc/heap.h> 63*83ee113eSDavid van Moolenbroek #include <isc/random.h> 64*83ee113eSDavid van Moolenbroek 65*83ee113eSDavid van Moolenbroek #include <irs/resconf.h> 66*83ee113eSDavid van Moolenbroek 67*83ee113eSDavid van Moolenbroek #include <dns/client.h> 68*83ee113eSDavid van Moolenbroek #include <dns/fixedname.h> 69*83ee113eSDavid van Moolenbroek #include <dns/keyvalues.h> 70*83ee113eSDavid van Moolenbroek #include <dns/lib.h> 71*83ee113eSDavid van Moolenbroek #include <dns/name.h> 72*83ee113eSDavid van Moolenbroek #include <dns/rdata.h> 73*83ee113eSDavid van Moolenbroek #include <dns/rdataclass.h> 74*83ee113eSDavid van Moolenbroek #include <dns/rdatalist.h> 75*83ee113eSDavid van Moolenbroek #include <dns/rdataset.h> 76*83ee113eSDavid van Moolenbroek #include <dns/rdatastruct.h> 77*83ee113eSDavid van Moolenbroek #include <dns/rdatatype.h> 78*83ee113eSDavid van Moolenbroek #include <dns/result.h> 79*83ee113eSDavid van Moolenbroek #include <dns/secalg.h> 80*83ee113eSDavid van Moolenbroek #include <dns/tsec.h> 81*83ee113eSDavid van Moolenbroek 82*83ee113eSDavid van Moolenbroek #include <dst/dst.h> 83*83ee113eSDavid van Moolenbroek 84*83ee113eSDavid van Moolenbroek #include "result.h" 85*83ee113eSDavid van Moolenbroek 86*83ee113eSDavid van Moolenbroek 87*83ee113eSDavid van Moolenbroek /* 88*83ee113eSDavid van Moolenbroek * DHCP context structure 89*83ee113eSDavid van Moolenbroek * This holds the libisc information for a dhcp entity 90*83ee113eSDavid van Moolenbroek */ 91*83ee113eSDavid van Moolenbroek 92*83ee113eSDavid van Moolenbroek typedef struct dhcp_context { 93*83ee113eSDavid van Moolenbroek isc_mem_t *mctx; 94*83ee113eSDavid van Moolenbroek isc_appctx_t *actx; 95*83ee113eSDavid van Moolenbroek int actx_started; 96*83ee113eSDavid van Moolenbroek isc_taskmgr_t *taskmgr; 97*83ee113eSDavid van Moolenbroek isc_task_t *task; 98*83ee113eSDavid van Moolenbroek isc_socketmgr_t *socketmgr; 99*83ee113eSDavid van Moolenbroek isc_timermgr_t *timermgr; 100*83ee113eSDavid van Moolenbroek #if defined (NSUPDATE) 101*83ee113eSDavid van Moolenbroek dns_client_t *dnsclient; 102*83ee113eSDavid van Moolenbroek #endif 103*83ee113eSDavid van Moolenbroek } dhcp_context_t; 104*83ee113eSDavid van Moolenbroek 105*83ee113eSDavid van Moolenbroek extern dhcp_context_t dhcp_gbl_ctx; 106*83ee113eSDavid van Moolenbroek 107*83ee113eSDavid van Moolenbroek #define DHCP_MAXDNS_WIRE 256 108*83ee113eSDavid van Moolenbroek #define DHCP_MAXNS 3 109*83ee113eSDavid van Moolenbroek #define DHCP_HMAC_MD5_NAME "HMAC-MD5.SIG-ALG.REG.INT." 110*83ee113eSDavid van Moolenbroek 111*83ee113eSDavid van Moolenbroek isc_result_t dhcp_isc_name(unsigned char *namestr, 112*83ee113eSDavid van Moolenbroek dns_fixedname_t *namefix, 113*83ee113eSDavid van Moolenbroek dns_name_t **name); 114*83ee113eSDavid van Moolenbroek 115*83ee113eSDavid van Moolenbroek isc_result_t 116*83ee113eSDavid van Moolenbroek isclib_make_dst_key(char *inname, 117*83ee113eSDavid van Moolenbroek char *algorithm, 118*83ee113eSDavid van Moolenbroek unsigned char *secret, 119*83ee113eSDavid van Moolenbroek int length, 120*83ee113eSDavid van Moolenbroek dst_key_t **dstkey); 121*83ee113eSDavid van Moolenbroek 122*83ee113eSDavid van Moolenbroek #define DHCP_CONTEXT_PRE_DB 1 123*83ee113eSDavid van Moolenbroek #define DHCP_CONTEXT_POST_DB 2 124*83ee113eSDavid van Moolenbroek isc_result_t dhcp_context_create(int flags, 125*83ee113eSDavid van Moolenbroek struct in_addr *local4, 126*83ee113eSDavid van Moolenbroek struct in6_addr *local6); 127*83ee113eSDavid van Moolenbroek void isclib_cleanup(void); 128*83ee113eSDavid van Moolenbroek 129*83ee113eSDavid van Moolenbroek void dhcp_signal_handler(int signal); 130*83ee113eSDavid van Moolenbroek extern int shutdown_signal; 131*83ee113eSDavid van Moolenbroek 132*83ee113eSDavid van Moolenbroek #endif /* ISCLIB_H */ 133