xref: /minix3/external/bsd/dhcp/dist/includes/omapip/isclib.h (revision 83ee113ee0d94f3844d44065af2311604e9a30ad)
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