Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/inetsrv/addrobj.c

    r02a09ed ra1a101d  
    4242#include <stdlib.h>
    4343#include <str.h>
     44
    4445#include "addrobj.h"
    4546#include "inetsrv.h"
    4647#include "inet_link.h"
     48#include "inet_util.h"
    4749
    4850static inet_addrobj_t *inet_addrobj_find_by_name_locked(const char *, inet_link_t *);
     
    104106/** Find address object matching address @a addr.
    105107 *
    106  * @param addr Address
    107  * @oaram find iaf_net to find network (using mask),
    108  *             iaf_addr to find local address (exact match)
    109  *
     108 * @param addr  Address
     109 * @oaram find  iaf_net to find network (using mask),
     110 *              iaf_addr to find local address (exact match)
    110111 */
    111112inet_addrobj_t *inet_addrobj_find(inet_addr_t *addr, inet_addrobj_find_t find)
    112113{
    113         fibril_mutex_lock(&addr_list_lock);
    114        
     114        uint32_t mask;
     115
     116        log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_addrobj_find(%x)", (unsigned)addr->ipv4);
     117
     118        fibril_mutex_lock(&addr_list_lock);
     119
    115120        list_foreach(addr_list, link) {
    116121                inet_addrobj_t *naddr = list_get_instance(link,
    117122                    inet_addrobj_t, addr_list);
    118                
    119                 if (inet_naddr_compare_mask(&naddr->naddr, addr)) {
     123
     124                mask = inet_netmask(naddr->naddr.bits);
     125                if ((naddr->naddr.ipv4 & mask) == (addr->ipv4 & mask)) {
    120126                        fibril_mutex_unlock(&addr_list_lock);
    121127                        log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_addrobj_find: found %p",
     
    124130                }
    125131        }
    126        
     132
    127133        log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_addrobj_find: Not found");
    128134        fibril_mutex_unlock(&addr_list_lock);
    129        
     135
    130136        return NULL;
    131137}
     
    212218{
    213219        inet_addr_t lsrc_addr;
    214         inet_naddr_addr(&addr->naddr, &lsrc_addr);
    215        
    216         return inet_link_send_dgram(addr->ilink, &lsrc_addr, ldest, dgram,
     220        inet_addr_t *ldest_addr;
     221
     222        lsrc_addr.ipv4 = addr->naddr.ipv4;
     223        ldest_addr = &dgram->dest;
     224
     225        return inet_link_send_dgram(addr->ilink, &lsrc_addr, ldest_addr, dgram,
    217226            proto, ttl, df);
    218227}
Note: See TracChangeset for help on using the changeset viewer.