@@ -27,11 +27,17 @@ TEST(parse_etc_hosts_system) {
2727 assert_se (etc_hosts_parse (& hosts , f ) == 0 );
2828}
2929
30+ #define in_addr_4 (_address_str ) \
31+ (&(struct in_addr_data) { .family = AF_INET, .address.in = { .s_addr = inet_addr(_address_str) } })
32+
33+ #define in_addr_6 (...) \
34+ (&(struct in_addr_data) { .family = AF_INET6, .address.in6 = { .s6_addr = __VA_ARGS__ } })
35+
3036#define has_4 (_set , _address_str ) \
31- set_contains(_set, &(struct in_addr_data) { .family = AF_INET, .address.in = { .s_addr = inet_addr( _address_str) } } )
37+ set_contains(_set, in_addr_4( _address_str))
3238
3339#define has_6 (_set , ...) \
34- set_contains(_set, &(struct in_addr_data) { .family = AF_INET6, .address.in6 = { .s6_addr = __VA_ARGS__ } } )
40+ set_contains(_set, in_addr_6( __VA_ARGS__) )
3541
3642TEST (parse_etc_hosts ) {
3743 _cleanup_ (unlink_tempfilep ) char
@@ -110,6 +116,20 @@ TEST(parse_etc_hosts) {
110116 assert_se (set_size (bn -> addresses ) == 1 );
111117 assert_se (has_6 (bn -> addresses , {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 5 }));
112118
119+ EtcHostsItemByAddress * ba ;
120+ assert_se (ba = hashmap_get (hosts .by_address , in_addr_4 ("1.2.3.6" )));
121+ assert_se (set_size (ba -> names ) == 2 );
122+ assert_se (set_contains (ba -> names , "dash" ));
123+ assert_se (set_contains (ba -> names , "dash-dash.where-dash" ));
124+ assert_se (streq (ba -> canonical_name , "dash" ));
125+
126+ assert_se (ba = hashmap_get (hosts .by_address , in_addr_6 ({0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 5 })));
127+ assert_se (set_size (ba -> names ) == 3 );
128+ assert_se (set_contains (ba -> names , "some.where" ));
129+ assert_se (set_contains (ba -> names , "some.other" ));
130+ assert_se (set_contains (ba -> names , "foobar.foo.foo" ));
131+ assert_se (streq (ba -> canonical_name , "some.where" ));
132+
113133 assert_se ( set_contains (hosts .no_address , "some.where" ));
114134 assert_se ( set_contains (hosts .no_address , "some.other" ));
115135 assert_se ( set_contains (hosts .no_address , "deny.listed" ));
0 commit comments