LCOV - code coverage report
Current view: top level - vppinfra/linux - netns.c (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 13 15 86.7 %
Date: 2023-07-05 22:20:52 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2021 Cisco and/or its affiliates.
       3             :  * Licensed under the Apache License, Version 2.0 (the "License");
       4             :  * you may not use this file except in compliance with the License.
       5             :  * You may obtain a copy of the License at:
       6             :  *
       7             :  *     http://www.apache.org/licenses/LICENSE-2.0
       8             :  *
       9             :  * Unless required by applicable law or agreed to in writing, software
      10             :  * distributed under the License is distributed on an "AS IS" BASIS,
      11             :  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      12             :  * See the License for the specific language governing permissions and
      13             :  * limitations under the License.
      14             :  */
      15             : 
      16             : #define _GNU_SOURCE
      17             : #include <fcntl.h>
      18             : #include <sched.h>
      19             : 
      20             : #include <vppinfra/format.h>
      21             : 
      22             : __clib_export int
      23         600 : clib_netns_open (u8 *netns_u8)
      24             : {
      25         600 :   char *netns = (char *) netns_u8;
      26         600 :   u8 *s = 0;
      27             :   int fd;
      28             : 
      29         600 :   if ((NULL) == netns)
      30         300 :     s = format (0, "/proc/self/ns/net");
      31         300 :   else if (strncmp (netns, "pid:", 4) == 0)
      32           0 :     s = format (0, "/proc/%u/ns/net%c", atoi (netns + 4), 0);
      33         300 :   else if (netns[0] == '/')
      34           0 :     s = format (0, "%s%c", netns, 0);
      35             :   else
      36         300 :     s = format (0, "/var/run/netns/%s%c", netns, 0);
      37             : 
      38         600 :   fd = open ((char *) s, O_RDONLY);
      39         600 :   vec_free (s);
      40         600 :   return fd;
      41             : }
      42             : 
      43             : __clib_export int
      44         900 : clib_setns (int nfd)
      45             : {
      46         900 :   return setns (nfd, CLONE_NEWNET);
      47             : }
      48             : 
      49             : /*
      50             :  * fd.io coding-style-patch-verification: ON
      51             :  *
      52             :  * Local Variables:
      53             :  * eval: (c-set-style "gnu")
      54             :  * End:
      55             :  */

Generated by: LCOV version 1.14