Changeset 4599

Show
Ignore:
Timestamp:
11/07/08 04:23:59 (2 months ago)
Author:
andreas
Message:

added retrieval of remote kmaddress via PF_KEY

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/charon/plugins/kernel_netlink/kernel_netlink_ipsec.c

    r4579 r4599  
    588588            local  = xfrm2host(kmaddress->family, &kmaddress->local, 0); 
    589589            remote = xfrm2host(kmaddress->family, &kmaddress->remote, 0); 
    590             DBG2(DBG_KNL, "  %H...%H", local, remote); 
     590            DBG2(DBG_KNL, "  kmaddress: %H...%H", local, remote); 
    591591        } 
    592592        else if (rta->rta_type == XFRMA_MIGRATE) 
  • trunk/src/charon/plugins/kernel_pfkey/kernel_pfkey_ipsec.c

    r4579 r4599  
    835835{ 
    836836    pfkey_msg_t response; 
     837    sockaddr_t *local_addr, *remote_addr; 
    837838    traffic_selector_t *src_ts, *dst_ts; 
    838839    policy_dir_t dir; 
    839     u_int32_t reqid = 0; 
    840     host_t *local
     840    u_int32_t local_len, reqid = 0; 
     841    host_t *local, *remote
    841842    job_t *job; 
    842843 
     
    850851    src_ts = sadb_address2ts(response.src); 
    851852    dst_ts = sadb_address2ts(response.dst); 
    852     local = host_create_from_sockaddr((sockaddr_t*)&response.x_kmaddress[1]); 
     853    local_addr  = (sockaddr_t*)&response.x_kmaddress[1]; 
     854    local = host_create_from_sockaddr(local_addr); 
     855    local_len = (local_addr->sa_family == AF_INET6)? 
     856                sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in); 
     857    remote_addr = (sockaddr_t*)((u_int8_t*)local_addr + local_len); 
     858    remote = host_create_from_sockaddr(remote_addr); 
    853859    dir = kernel2dir(response.x_policy->sadb_x_policy_dir); 
    854860    DBG2(DBG_KNL, "  policy %R === %R %N, id %u", src_ts, dst_ts, 
    855861                     policy_dir_names, dir, response.x_policy->sadb_x_policy_id); 
    856     DBG2(DBG_KNL, "  kmaddress: %H", local); 
     862    DBG2(DBG_KNL, "  kmaddress: %H...%H", local, remote); 
    857863     
    858864    if (src_ts && dst_ts) 
     
    861867                       src_ts, dst_ts, policy_dir_names, dir, reqid, local); 
    862868        job = (job_t*)migrate_job_create(reqid, src_ts, dst_ts, dir, 
    863                                          local, NULL); 
     869                                         local, remote); 
    864870        charon->processor->queue_job(charon->processor, job); 
    865871    } 
     
    869875        DESTROY_IF(dst_ts); 
    870876        DESTROY_IF(local); 
     877        DESTROY_IF(remote); 
    871878    } 
    872879}