OpenDNSSEC-signer  1.4.1
acl.h
Go to the documentation of this file.
1 /*
2  * $Id: acl.h 4958 2011-04-18 07:11:09Z matthijs $
3  *
4  * Copyright (c) 2011 NLNet Labs. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
19  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
21  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
23  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
25  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  *
27  */
28 
34 #ifndef WIRE_ACL_H
35 #define WIRE_ACL_H
36 
37 #include "config.h"
38 #include "shared/allocator.h"
39 #include "wire/listener.h"
40 #include "wire/tsig.h"
41 
42 
48  ACL_RANGE_SINGLE = 0, /* single adress */
49  ACL_RANGE_MASK = 1, /* 10.20.30.40&255.255.255.0 */
50  ACL_RANGE_SUBNET = 2, /* 10.20.30.40/28 */
51  ACL_RANGE_MINMAX = 3 /* 10.20.30.40-10.20.30.60 (mask=max) */
52 };
54 
59 typedef struct acl_struct acl_type;
60 struct acl_struct {
62  /* address */
63  char* address;
64  unsigned int port;
65  int family;
69  /* tsig */
70  const char* tsig_name;
72  /* cache */
73  time_t ixfr_disabled;
74 };
75 
86 acl_type* acl_create(allocator_type* allocator, char* address,
87  char* port, char* tsig_name, tsig_type* tsig);
88 
97 acl_type* acl_find(acl_type* acl, struct sockaddr_storage* addr,
98  tsig_rr_type* tsig);
99 
106 int acl_parse_family(const char* a);
107 
116 int addr2ip(struct sockaddr_storage addr, char* ip, size_t len);
117 
124 void acl_cleanup(acl_type* acl, allocator_type* allocator);
125 
126 #endif /* WIRE_ACL_H */