X-Git-Url: http://git.ipfire.org/?p=people%2Fms%2Flibloc.git;a=blobdiff_plain;f=src%2Fnetwork.c;h=09f225e7138073204b444414eedbe659d6ee5a2e;hp=387e18d526f4e2eac5e31f2d20fc6e8097e7adcf;hb=42f3ccd725ccc9d4479a3b20ea6338a431527684;hpb=571469635d202f9b4263cc23d3dc3a0922ec9fa4 diff --git a/src/network.c b/src/network.c index 387e18d..09f225e 100644 --- a/src/network.c +++ b/src/network.c @@ -16,13 +16,17 @@ #include #include -#include #include #include #include #include +#ifdef HAVE_ENDIAN_H +# include +#endif + #include +#include #include #include #include @@ -300,9 +304,7 @@ LOC_EXPORT int loc_network_set_country_code(struct loc_network* network, const c if (!loc_country_code_is_valid(country_code)) return -EINVAL; - for (unsigned int i = 0; i < 3; i++) { - network->country_code[i] = country_code[i]; - } + loc_country_code_copy(network->country_code, country_code); return 0; } @@ -346,31 +348,27 @@ LOC_EXPORT int loc_network_match_flag(struct loc_network* network, uint32_t flag LOC_EXPORT int loc_network_to_database_v0(struct loc_network* network, struct loc_database_network_v0* dbobj) { // Add country code - for (unsigned int i = 0; i < 2; i++) { - dbobj->country_code[i] = network->country_code[i] ? network->country_code[i] : '\0'; - } + loc_country_code_copy(dbobj->country_code, network->country_code); // Add ASN dbobj->asn = htobe32(network->asn); // Flags - dbobj->flags = htobe32(network->flags); + dbobj->flags = htobe16(network->flags); return 0; } LOC_EXPORT int loc_network_new_from_database_v0(struct loc_ctx* ctx, struct loc_network** network, struct in6_addr* address, unsigned int prefix, const struct loc_database_network_v0* dbobj) { + char country_code[3]; + int r = loc_network_new(ctx, network, address, prefix); if (r) return r; // Import country code - char country_code[3]; - for (unsigned int i = 0; i < 2; i++) { - country_code[i] = dbobj->country_code[i]; - } - country_code[2] = '\0'; + loc_country_code_copy(country_code, dbobj->country_code); r = loc_network_set_country_code(*network, country_code); if (r) @@ -382,7 +380,7 @@ LOC_EXPORT int loc_network_new_from_database_v0(struct loc_ctx* ctx, struct loc_ return r; // Import flags - r = loc_network_set_flag(*network, be32toh(dbobj->flags)); + r = loc_network_set_flag(*network, be16toh(dbobj->flags)); if (r) return r;