+LOC_EXPORT int loc_network_match_asn(struct loc_network* network, uint32_t asn) {
+ return network->asn == asn;
+}
+
+LOC_EXPORT int loc_network_has_flag(struct loc_network* network, uint32_t flag) {
+ return network->flags & flag;
+}
+
+LOC_EXPORT int loc_network_set_flag(struct loc_network* network, uint32_t flag) {
+ network->flags |= flag;
+
+ return 0;
+}
+
+LOC_EXPORT int loc_network_match_flag(struct loc_network* network, uint32_t flag) {
+ return loc_network_has_flag(network, flag);
+}
+
+LOC_EXPORT int loc_network_is_subnet_of(struct loc_network* self, struct loc_network* other) {
+ // If the start address of the other network is smaller than this network,
+ // it cannot be a subnet.
+ if (in6_addr_cmp(&self->first_address, &other->first_address) < 0)
+ return 0;
+
+ // If the end address of the other network is greater than this network,
+ // it cannot be a subnet.
+ if (in6_addr_cmp(&self->last_address, &other->last_address) > 0)
+ return 0;
+
+ return 1;
+}
+
+LOC_EXPORT int loc_network_to_database_v1(struct loc_network* network, struct loc_database_network_v1* dbobj) {