1 /*
2  * Project    : ipv6calc
3  * File       : databases/lib/libipv6calc_db_wrapper_BuiltIn.h
4  * Version    : $Id: 2f6b58e93f2eaaca0e76c59bff83734abc71ab83 $
5  * Copyright  : 2013-2019 by Peter Bieringer <pb (at) bieringer.de>
6  *
7  * Information:
8  *  Header file for libipv6calc_db_wrapper_BuiltIn.c
9  */
10 
11 #include <time.h>
12 #include "ipv6calctypes.h"
13 #include "libmac.h"
14 #include "libipv4addr.h"
15 #include "libipv6addr.h"
16 
17 #ifndef _libipv6calc_db_wrapper_BuiltIn_h
18 
19 #define _libipv6calc_db_wrapper_BuiltIn_h 1
20 
21 // database types
22 #define BUILTIN_DB_IPV4_REGISTRY				1
23 #define BUILTIN_DB_IPV6_REGISTRY				2
24 #define BUILTIN_DB_IAB						3
25 #define BUILTIN_DB_OUI						4
26 #define BUILTIN_DB_OUI36					5
27 #define BUILTIN_DB_CC_REG					6
28 #define BUILTIN_DB_AS_REG					7
29 #define BUILTIN_DB_OUI28					8
30 #define BUILTIN_DB_MAX						(8 + 1)
31 
32 
33 // features
34 extern uint32_t wrapper_features_BuiltIn;
35 
36 /* ASN->Registry assignment structure */
37 typedef struct {
38 	const uint32_t asn_start;
39 	const uint32_t asn_stop;
40 	const uint8_t  registry;
41 } s_asn_assignment;
42 
43 
44 /* CC->Registry assignment structure */
45 typedef struct {
46 	const char    cc[3];
47 	const uint8_t registry;
48 } s_cc_reg_assignment;
49 
50 typedef struct {
51 	const uint8_t  registry;
52 } s_cc_index_reg_assignment;
53 
54 
55 /* IPv4 address assignment structure */
56 typedef struct {
57 	const uint32_t first;
58 	const uint32_t last;
59 	const uint8_t  registry;
60 } s_ipv4addr_assignment;
61 
62 
63 /* IPv4 address info structure */
64 typedef struct {
65 	const uint32_t first;
66 	const uint32_t last;
67 	const char*    info;
68 } s_ipv4addr_info;
69 
70 
71 /* IPv6 address assignment structure */
72 typedef struct {
73 	const uint32_t ipv6addr_00_31;
74 	const uint32_t ipv6addr_32_63;
75 	const uint32_t ipv6mask_00_31;
76 	const uint32_t ipv6mask_32_63;
77 	const uint8_t  prefixlength;	/* prefix length (0-128) 8 bit*/
78 	const uint8_t  registry;
79 } s_ipv6addr_assignment;
80 
81 
82 /* IPv6 address info structure */
83 typedef struct {
84 	const uint32_t ipv6addr_00_31;
85 	const uint32_t ipv6addr_32_63;
86 	const uint32_t ipv6mask_00_31;
87 	const uint32_t ipv6mask_32_63;
88 	const uint8_t  prefixlength;	/* prefix length (0-128) 8 bit*/
89 	const char*    info;
90 } s_ipv6addr_info;
91 
92 #endif
93 
94 
95 extern int  libipv6calc_db_wrapper_BuiltIn_wrapper_init(void);
96 extern int  libipv6calc_db_wrapper_BuiltIn_wrapper_cleanup(void);
97 extern void libipv6calc_db_wrapper_BuiltIn_wrapper_info(char *string, const size_t size);
98 extern void libipv6calc_db_wrapper_BuiltIn_wrapper_print_db_info(const int level_verbose, const char *prefix_string);
99 extern char *libipv6calc_db_wrapper_BuiltIn_wrapper_db_info_used(void);
100 
101 extern int libipv6calc_db_wrapper_BuiltIn_has_features(uint32_t features);
102 extern time_t libipv6calc_db_wrapper_BuiltIn_db_unixtime_by_feature(uint32_t feature);
103 
104 extern int libipv6calc_db_wrapper_BuiltIn_registry_num_by_as_num32(const uint32_t as_num32);
105 extern int libipv6calc_db_wrapper_BuiltIn_registry_num_by_cc_index(const uint16_t cc_index);
106 
107 // IEEE
108 extern int libipv6calc_db_wrapper_BuiltIn_ieee_vendor_string_by_macaddr(char *resultstring, const size_t resultstring_length, const ipv6calc_macaddr *macaddrp);
109 extern int libipv6calc_db_wrapper_BuiltIn_ieee_vendor_string_short_by_macaddr(char *resultstring, const size_t resultstring_length, const ipv6calc_macaddr *macaddrp);
110 
111 // IPv4 Registry
112 extern int libipv6calc_db_wrapper_BuiltIn_registry_num_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp);
113 extern int libipv6calc_db_wrapper_BuiltIn_info_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp, char *string, const size_t string_len);
114 
115 // IPv6 Registry
116 extern int libipv6calc_db_wrapper_BuiltIn_registry_num_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp);
117 extern int libipv6calc_db_wrapper_BuiltIn_info_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp, char *string, const size_t string_len);
118