version 1.14, 2012/07/01 23:21:06 |
version 1.15, 2012/07/15 00:23:00 |
Line 120 struct npf_natpolicy { |
|
Line 120 struct npf_natpolicy { |
|
kmutex_t n_lock; |
kmutex_t n_lock; |
kcondvar_t n_cv; |
kcondvar_t n_cv; |
npf_portmap_t * n_portmap; |
npf_portmap_t * n_portmap; |
|
/* NPF_NP_CMP_START */ |
int n_type; |
int n_type; |
u_int n_flags; |
u_int n_flags; |
size_t n_addr_sz; |
size_t n_addr_sz; |
Line 268 npf_nat_freepolicy(npf_natpolicy_t *np) |
|
Line 269 npf_nat_freepolicy(npf_natpolicy_t *np) |
|
} |
} |
|
|
void |
void |
npf_nat_freealg(npf_alg_t *alg) |
npf_nat_freealg(npf_natpolicy_t *np, npf_alg_t *alg) |
{ |
{ |
(void)alg; /* TODO */ |
npf_nat_t *nt; |
|
|
|
mutex_enter(&np->n_lock); |
|
LIST_FOREACH(nt, &np->n_nat_list, nt_entry) { |
|
if (nt->nt_alg != alg) { |
|
continue; |
|
} |
|
nt->nt_alg = NULL; |
|
} |
|
mutex_exit(&np->n_lock); |
} |
} |
|
|
/* |
/* |
Line 453 npf_nat_create(npf_cache_t *npc, npf_nat |
|
Line 463 npf_nat_create(npf_cache_t *npc, npf_nat |
|
/* Save the original address which may be rewritten. */ |
/* Save the original address which may be rewritten. */ |
if (np->n_type == NPF_NATOUT) { |
if (np->n_type == NPF_NATOUT) { |
/* Source (local) for Outbound NAT. */ |
/* Source (local) for Outbound NAT. */ |
memcpy(&nt->nt_oaddr, npc->npc_srcip, npc->npc_ipsz); |
memcpy(&nt->nt_oaddr, npc->npc_srcip, npc->npc_alen); |
} else { |
} else { |
/* Destination (external) for Inbound NAT. */ |
/* Destination (external) for Inbound NAT. */ |
KASSERT(np->n_type == NPF_NATIN); |
KASSERT(np->n_type == NPF_NATIN); |
memcpy(&nt->nt_oaddr, npc->npc_dstip, npc->npc_ipsz); |
memcpy(&nt->nt_oaddr, npc->npc_dstip, npc->npc_alen); |
} |
} |
|
|
/* |
/* |