tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: RFC: ipsec(4) pseudo interface
In article <75925357-8e16-0f0f-b7a0-78155c8657c1%iij.ad.jp@localhost>,
Kengo NAKAHARA <k-nakahara%iij.ad.jp@localhost> wrote:
>Hi,
>
>On 2017/12/19 2:54, Christos Zoulas wrote:
>> In article <02c36311-2fcd-08cf-cc71-b472e7c01be9%iij.ad.jp@localhost>,
>> Kengo NAKAHARA <k-nakahara%iij.ad.jp@localhost> wrote:
>>> Hi,
>>>
>>> We implement ipsec(4) pseudo interface for route-based VPNs. This pseudo
>>> interface manages its security policy(SP) by itself, in particular, we do
>>> # ifconfig ipsec0 tunnel 10.0.0.1 10.0.0.2
>>> the SPs "10.0.0.1 -> 10.0.0.2"(out) and "10.0.0.2 -> 10.0.0.1"(in) are
>>> generated automatically and atomically. And then, when we do
>>> # ifconfig ipsec0 deletetunnel
>>> the SPs are destroyed automatically and atomically, too.
>>>
>>> Here is the patches and an unified patch.
>>> http://netbsd.org/~knakahara/if_ipsec/if_ipsec.tgz
>>> http://netbsd.org/~knakahara/if_ipsec/if_ipsec-unified.patch
>>>
>>> By the way, I have one question. In the above patch(s), I temporarily add
>>> manual for ipsecX pseudo interface as if_ipsec.4, because there is already
>>> ipsec.4 for general ipsec protocol. How should I add the man of ipsec(4)
>>> pseudo interface?
>>> (a) Add if_ipsec.4
>>> (b) move current ipsec.4(for ipsec protocol) to ipsec.9, and then
>>> add ipsec.4(for ipsec pseudo interface)
>>> (c) any other
>>>
>>> Could you comment the patch or the question?
>>
>> I've wanted this feature for a long time! Looks ok to me, but the
>> sockaddr_copy()/port setting code, should be abstracted to a single
>> function since it is repeated in ioctl().
>
>Thank you for your reviewing. I fix it in the following patch.
> - patch series
> - https://netbsd.org/~knakahara/if_ipsec/if_ipsec2.tgz
> - unified patch
> - https://netbsd.org/~knakahara/if_ipsec/if_ipsec2-unified.patch
Thanks:
+ error = var->iv_output(var, family, m);
+ if (!error) {
- It is simpler to do (early returns):
if (error)
return error;
...
return 0;
- What's the point of 'goto bad' in ioctl if there is no cleanup to be done?
- There is one more place you could use the addr_port function?
[or perhaps abstract it in in_port_t *get_port(struct sockaddr *)?
- We should use in_port_t instead of unsigned short for ports.
- I am not clear how the code interracts with ipsec endpoints created
from /etc/ipsec.conf and ones created via ifconfig? I.e. if I create
endpoints in /etc/ipsec.conf, does the cloner interface get automatically
constructed?
Thanks,
christos
Home |
Main Index |
Thread Index |
Old Index