Changeset 3905

Show
Ignore:
Timestamp:
03/17/06 08:29:12 (3 years ago)
Author:
morris
Message:

Add wi_address_wildcard_for_family()

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • libwired/trunk/libwired/net/wi-address.c

    r3828 r3905  
    122122#pragma mark - 
    123123 
     124wi_address_t * wi_address_wildcard_for_family(wi_address_family_t family) { 
     125        struct sockaddr_in      sa; 
     126        struct sockaddr_in6     sa6; 
     127 
     128        switch(family) { 
     129                case WI_ADDRESS_IPV4: 
     130                        memset(&sa, 0, sizeof(sa)); 
     131                        sa.sin_family       = AF_INET; 
     132                        sa.sin_addr.s_addr  = INADDR_ANY; 
     133#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN 
     134                        sa.sin_len          = sizeof(sa); 
     135#endif 
     136 
     137                        return wi_autorelease(wi_address_init_with_sa(wi_address_alloc(), (struct sockaddr *) &sa)); 
     138                        break; 
     139 
     140                case WI_ADDRESS_IPV6: 
     141                        memset(&sa6, 0, sizeof(sa6)); 
     142                        sa6.sin6_family     = AF_INET6; 
     143                        sa6.sin6_addr       = in6addr_any; 
     144#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN 
     145                        sa6.sin6_len        = sizeof(sa6); 
     146#endif 
     147 
     148                        return wi_autorelease(wi_address_init_with_sa(wi_address_alloc(), (struct sockaddr *) &sa6)); 
     149                        break; 
     150 
     151                default: 
     152                        break; 
     153        } 
     154 
     155        return NULL; 
     156} 
     157 
     158 
     159 
     160#pragma mark - 
     161 
    124162wi_address_t * wi_address_alloc(void) { 
    125163        return wi_runtime_create_instance(_wi_address_runtime_id, sizeof(wi_address_t)); 
  • libwired/trunk/libwired/net/wi-address.h

    r3828 r3905  
    4848WI_EXPORT wi_runtime_id_t                       wi_address_runtime_id(void); 
    4949 
     50WI_EXPORT wi_address_t *                        wi_address_wildcard_for_family(wi_address_family_t); 
     51 
    5052WI_EXPORT wi_address_t *                        wi_address_alloc(void); 
    5153WI_EXPORT wi_address_t *                        wi_address_init_with_sa(wi_address_t *, struct sockaddr *); 
  • libwired/trunk/libwired/net/wi-host.c

    r3860 r3905  
    233233#else 
    234234        wi_list_t                               *list; 
    235         wi_address_t                    *address; 
    236         struct sockaddr_in              sa; 
    237         struct sockaddr_in6             sa6; 
    238235 
    239236        list = wi_list_init(wi_list_alloc()); 
    240  
    241         memset(&sa, 0, sizeof(sa)); 
    242         sa.sin_family           = AF_INET; 
    243         sa.sin_addr.s_addr      = INADDR_ANY; 
    244 #ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN 
    245         sa.sin_len                      = sizeof(sa); 
    246 #endif 
    247  
    248         address = wi_address_init_with_sa(wi_address_alloc(), (struct sockaddr *) &sa); 
    249         wi_list_append_data(list, address); 
    250         wi_release(address); 
    251          
    252         memset(&sa6, 0, sizeof(sa6)); 
    253         sa6.sin6_family         = AF_INET6; 
    254         sa6.sin6_addr           = in6addr_any; 
    255 #ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN 
    256         sa6.sin6_len            = sizeof(sa6); 
    257 #endif 
    258          
    259         address = wi_address_init_with_sa(wi_address_alloc(), (struct sockaddr *) &sa6); 
    260         wi_list_append_data(list, address); 
    261         wi_release(address); 
     237        wi_list_append_data(list, wi_address_wildcard_for_family(WI_ADDRESS_IPV4)); 
     238        wi_list_append_data(list, wi_address_wildcard_for_family(WI_ADDRESS_IPV6)); 
    262239 
    263240        return wi_autorelease(list);