diff --git a/pass-1/rlocs.c b/pass-1/rlocs.c index 5194bb6..836b92b 100644 --- a/pass-1/rlocs.c +++ b/pass-1/rlocs.c @@ -409,6 +409,36 @@ ssize_t rloc_encrypt( struct rloc *rloc, unsigned char *data, size_t data_len, u return RSA_public_encrypt( data_len, data, dest, rloc->key, RSA_PKCS1_OAEP_PADDING ); } +void rlocs_debug_output( struct rlocs *reg ) +{ + int i; + char addr1[128], addr2[128]; + + info( "Configuration has parsed as:" ); + for( i = 0 ; i < reg->num_entries; i++ ) { + struct rloc *current = ®->entries[i]; + inet_ntop( current->family, ¤t->addr, &addr1[0], 128 ); + + info( "RLOC %i: family %i, address %s", i, current->family, &addr1[0] ); + } + + for ( i = 0 ; i < reg->num_ip4_map_entries ; i++ ) { + struct ip4_eid_map_entry *current = ®->ip4_mappings[i]; + inet_ntop( AF_INET, ¤t->network, &addr1[0], 128 ); + inet_ntop( AF_INET, ¤t->rloc->addr, &addr2[0], 128 ); + info( "IPv4 EID mapping %i: %s/%u => %s", i, addr1, current->mask, addr2 ); + } + + for ( i = 0 ; i < reg->num_ip6_map_entries ; i++ ) { + struct ip6_eid_map_entry *current = ®->ip6_mappings[i]; + inet_ntop( AF_INET6, ¤t->network, &addr1[0], 128 ); + inet_ntop( AF_INET6, ¤t->rloc->addr, &addr2[0], 128 ); + info( "IPv6 EID mapping %i: %s/%u => %s", i, addr1, current->mask, addr2 ); + } + + return; +} + void rlocs_free( struct rlocs* registry ) { diff --git a/pass-1/rlocs.h b/pass-1/rlocs.h index ba604ff..48f1861 100644 --- a/pass-1/rlocs.h +++ b/pass-1/rlocs.h @@ -57,6 +57,8 @@ struct rloc *rloc_find_for_ipv4( struct rlocs *reg, struct in_addr *eid ); struct rloc *rloc_find_for_ipv6( struct rlocs *reg, struct in6_addr *eid ); struct rloc *rloc_find_by_address( struct rlocs *reg, struct in_addr *ipv4, struct in6_addr *ipv6 ); +void rlocs_debug_output( struct rlocs *reg ); + /* Returns -1 on error, or number of bytes written */ ssize_t rloc_encrypt( struct rloc *rloc, unsigned char *data, size_t data_len, unsigned char *dest, size_t dest_len ); diff --git a/pass-1/wrapper.c b/pass-1/wrapper.c index 469ac7b..8895b2f 100644 --- a/pass-1/wrapper.c +++ b/pass-1/wrapper.c @@ -173,8 +173,7 @@ int wrap_ipv6_packet(struct rlocs *reg, struct recv_pkt* pkt, struct rsp_data* o int main(int argc, char** argv) { wrapper wrap; - char addr1[128], addr2[128]; - int i; + if ( argc < 4 ) { warn( "Usage: %s ", argv[0] ); return 1; @@ -190,28 +189,7 @@ int main(int argc, char** argv) warn( "Failed to get config from %s", argv[1] ); return 1; } - - info( "Configuration has parsed as:" ); - for( i = 0 ; i < wrap.rlocs->num_entries; i++ ) { - struct rloc *current = &wrap.rlocs->entries[i]; - inet_ntop( current->family, ¤t->addr, &addr1[0], 128 ); - - info( "RLOC %i: family %i, address %s", i, current->family, &addr1[0] ); - } - - for ( i = 0 ; i < wrap.rlocs->num_ip4_map_entries ; i++ ) { - struct ip4_eid_map_entry *current = &wrap.rlocs->ip4_mappings[i]; - inet_ntop( AF_INET, ¤t->network, &addr1[0], 128 ); - inet_ntop( AF_INET, ¤t->rloc->addr, &addr2[0], 128 ); - info( "IPv4 EID mapping %i: %s/%u => %s", i, addr1, current->mask, addr2 ); - } - - for ( i = 0 ; i < wrap.rlocs->num_ip6_map_entries ; i++ ) { - struct ip6_eid_map_entry *current = &wrap.rlocs->ip6_mappings[i]; - inet_ntop( AF_INET6, ¤t->network, &addr1[0], 128 ); - inet_ntop( AF_INET6, ¤t->rloc->addr, &addr2[0], 128 ); - info( "IPv6 EID mapping %i: %s/%u => %s", i, addr1, current->mask, addr2 ); - } + rlocs_debug_output( wrap.rlocs ); // TODO: We can scale the tun architecture by using multiqueue and having // a bunch of workers, rather than this noddy scheme. If we don't jump