@@ -79,18 +79,14 @@ struct ipx_modifier_field asn_fields[] = {
7979 * \return 0 (reserved AS number) if number was not found
8080 */
8181static uint32_t
82- mmdb_lookup (MMDB_s * db , struct sockaddr * address , int * err )
82+ mmdb_lookup (MMDB_s * db , struct sockaddr * address )
8383{
84- assert (db != NULL && address != NULL && err != NULL );
85-
86- int rc ;
87- * err = MMDB_SUCCESS ;
84+ int rc = 0 ;
8885 MMDB_lookup_result_s result ;
8986
9087 // Search for address
9188 result = MMDB_lookup_sockaddr (db , address , & rc );
9289 if (rc ) {
93- * err = rc ;
9490 return 0 ;
9591 }
9692
@@ -103,11 +99,11 @@ mmdb_lookup(MMDB_s *db, struct sockaddr *address, int *err)
10399 MMDB_entry_data_s data ;
104100 rc = MMDB_get_value (& (result .entry ), & data , ASN_LOOKUP_STRING , NULL );
105101 if (rc ) {
106- * err = rc ;
102+ MMDB_strerror ( rc ) ;
107103 return 0 ;
108104 }
109105
110- // Address was not found
106+ // No AS number found
111107 if (!data .has_data ) {
112108 return 0 ;
113109 }
@@ -128,30 +124,29 @@ mmdb_lookup(MMDB_s *db, struct sockaddr *address, int *err)
128124static int
129125get_asn (MMDB_s * db , struct ipx_modifier_output * out , uint8_t * address , size_t length )
130126{
131- int rc ;
127+ int rc = 0 ;
132128 uint32_t asn ;
133- struct sockaddr * addr ;
134129
135130 if (length == 4 ) {
136131 // IPv4 address
137132 struct sockaddr_in addr_4 = {
138133 .sin_family = AF_INET ,
139134 .sin_addr .s_addr = * ((uint32_t * )address )
140135 };
141- addr = ( struct sockaddr * ) & addr_4 ;
136+ asn = mmdb_lookup ( db , ( struct sockaddr * ) & addr_4 ) ;
142137 } else if (length == 16 ) {
143138 // IPv6 address
144139 struct sockaddr_in6 addr_6 = {
145140 .sin6_family = AF_INET6
146141 };
147142 memcpy (& (addr_6 .sin6_addr ), address , 16 );
148- addr = ( struct sockaddr * ) & addr_6 ;
143+ asn = mmdb_lookup ( db , ( struct sockaddr * ) & addr_6 ) ;
149144 } else {
150145 // Unknown address format
151146 return IPX_ERR_ARG ;
152147 }
153148
154- asn = htonl (mmdb_lookup ( db , addr , & rc ) );
149+ asn = htonl (asn );
155150 if (rc ) {
156151 // MMDB error
157152 return IPX_ERR_DENIED ;
0 commit comments