Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/udp/assoc.c

    r443a0bc r58e8646  
    4040#include <fibril_synch.h>
    4141#include <inet/endpoint.h>
     42#include <inet/inet.h>
    4243#include <io/log.h>
    4344#include <nettl/amap.h>
     
    261262                return EINVAL;
    262263
     264        /* This association has no local address set. Need to determine one. */
     265        log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_assoc_send - check no local addr");
     266        if (inet_addr_is_any(&epp.local.addr) && !assoc->nolocal) {
     267                log_msg(LOG_DEFAULT, LVL_DEBUG, "Determine local address.");
     268                rc = inet_get_srcaddr(&epp.remote.addr, 0, &epp.local.addr);
     269                if (rc != EOK) {
     270                        log_msg(LOG_DEFAULT, LVL_DEBUG, "Cannot determine "
     271                            "local address.");
     272                        return EINVAL;
     273                }
     274        }
     275
    263276        log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_assoc_send - check version");
    264277
    265         if (epp.remote.addr.version != epp.local.addr.version)
     278        if (!inet_addr_is_any(&epp.local.addr) &&
     279            epp.remote.addr.version != epp.local.addr.version)
    266280                return EINVAL;
    267281
Note: See TracChangeset for help on using the changeset viewer.