1. 28 Sep, 2018 9 commits
  2. 27 Sep, 2018 5 commits
  3. 26 Sep, 2018 15 commits
  4. 25 Sep, 2018 1 commit
  5. 24 Sep, 2018 5 commits
  6. 23 Sep, 2018 5 commits
    • Merge pull request #2640 from brauner/2018-09-23/netns_getifaddrs · 36be8e6c
      Stéphane Graber authored
      network: add netns_getifaddrs() implementation
    • network: add netns_getifaddrs() implementation · cc6119a0
      Christian Brauner authored
      This commit introduces my concept of a network namespace aware
      getifaddrs(), i.e. netns_getifaddrs(). This presupposes a kernel that
      carries my IF{L}A_TARGET_NETNSID patches:
      
      struct netns_ifaddrs {
              struct netns_ifaddrs *ifa_next;
      
              /* Can - but shouldn't be - NULL. */
              char *ifa_name;
      
              /* This field is not present struct ifaddrs. */
              int ifa_ifindex;
      
              unsigned ifa_flags;
      
              /* This field is not present struct ifaddrs. */
              int ifa_mtu;
      
              /* This field is not present struct ifaddrs. */
              int ifa_prefixlen;
      
              struct sockaddr *ifa_addr;
              struct sockaddr *ifa_netmask;
              union {
                      struct sockaddr *ifu_broadaddr;
                      struct sockaddr *ifu_dstaddr;
              } ifa_ifu;
      
              /* If you don't know what this is for don't touch it. */
              void *ifa_data;
      };
      
      which is a superset of struct ifaddrs. It contains additional
      information such as the mtu, ifindex of the interface and the prefix
      length of the address.
      Note that the field ordering is different. So don't get any ideas of
      using memcpy() to copy from an old struct ifaddrs into a struct
      netns_ifaddrs.
      
      int netns_getifaddrs(struct netns_ifaddrs **ifap, __s32 netns_id, bool *netnsid_aware)
      
      takes a network namespace identifier as argument which identifies the
      target network namespace.
      If successfull, i.e. netns_getifaddrs() returns 0, callers should check
      the bool *netnsid_aware return argument. If it is true then
      RTM_GET{ADDR,LINK} requests are fully netnsid aware. If it is false then
      they are not and the information returned in struct netns_ifaddrs does
      *not* contain correct information about the target network namespace
      identified by netnsid.
      Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>