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