[CRIU] [PATCH 1/3] net: Extrack ioctl() call from kerndat_socket_netns()
Kirill Tkhai
ktkhai at virtuozzo.com
Thu Mar 1 11:08:18 MSK 2018
On 28.02.2018 23:08, Andrei Vagin wrote:
> On Mon, Feb 19, 2018 at 03:16:02PM +0300, Kirill Tkhai wrote:
>> Refactoring, no functional change.
>>
>> Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
>> ---
>> criu/include/net.h | 1 +
>> criu/net.c | 26 +++++++++++++++-----------
>> 2 files changed, 16 insertions(+), 11 deletions(-)
>>
>> diff --git a/criu/include/net.h b/criu/include/net.h
>> index 796dcc415..74f0969ad 100644
>> --- a/criu/include/net.h
>> +++ b/criu/include/net.h
>> @@ -48,5 +48,6 @@ extern int move_veth_to_bridge(void);
>> extern int kerndat_link_nsid(void);
>> extern int net_get_nsid(int rtsk, int fd, int *nsid);
>> extern int kerndat_nsid(void);
>> +extern void check_has_netns_ioc(int fd, bool *kdat_val, const char *name);
>>
>> #endif /* __CR_NET_H__ */
>> diff --git a/criu/net.c b/criu/net.c
>> index 0176873e0..f9114dd25 100644
>> --- a/criu/net.c
>> +++ b/criu/net.c
>> @@ -2720,26 +2720,30 @@ struct ns_id *get_socket_ns(int lfd)
>> return ns;
>> }
>>
>> +void check_has_netns_ioc(int fd, bool *kdat_val, const char *name)
>
> static void check_has_netns_ioc ...
Extern as there is [2/3].
>> +{
>> + int ns_fd;
>> +
>> + ns_fd = ioctl(fd, SIOCGSKNS);
>> + *kdat_val = (ns_fd >= 0);
>> +
>> + if (ns_fd < 0)
>> + pr_warn("Unable to get %s network namespace\n", name);
>> + else
>> + close(ns_fd);
>> +}
>> +
>> int kerndat_socket_netns(void)
>> {
>> - int sk, ns_fd;
>> + int sk;
>>
>> sk = socket(AF_UNIX, SOCK_DGRAM, 0);
>> if (sk < 0) {
>> pr_perror("Unable to create socket");
>> return -1;
>> }
>> - ns_fd = ioctl(sk, SIOCGSKNS);
>> - if (ns_fd < 0) {
>> - pr_warn("Unable to get a socket network namespace\n");
>> - kdat.sk_ns = false;
>> - close(sk);
>> - return 0;
>> - }
>> + check_has_netns_ioc(sk, &kdat.sk_ns, "socket");
>> close(sk);
>> - close(ns_fd);
>> -
>> - kdat.sk_ns = true;
>>
>> return 0;
>> }
>>
More information about the CRIU
mailing list