Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package slirp4netns for openSUSE:Factory 
checked in at 2021-07-04 22:10:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/slirp4netns (Old)
 and      /work/SRC/openSUSE:Factory/.slirp4netns.new.2625 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "slirp4netns"

Sun Jul  4 22:10:38 2021 rev:12 rq:903657 version:1.1.11

Changes:
--------
--- /work/SRC/openSUSE:Factory/slirp4netns/slirp4netns.changes  2021-01-11 
17:14:47.768478092 +0100
+++ /work/SRC/openSUSE:Factory/.slirp4netns.new.2625/slirp4netns.changes        
2021-07-04 22:10:41.381253744 +0200
@@ -1,0 +2,8 @@
+Thu Jun 24 11:20:32 UTC 2021 - r...@fthiessen.de
+
+- Update to version 1.1.11:
+  * Add --macaddress option to specify the MAC address of the tap
+    interface.
+  * Updated the man page.
+
+-------------------------------------------------------------------

Old:
----
  slirp4netns-1.1.8.tar.xz

New:
----
  slirp4netns-1.1.11.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ slirp4netns.spec ++++++
--- /var/tmp/diff_new_pack.eX1ndK/_old  2021-07-04 22:10:41.873249938 +0200
+++ /var/tmp/diff_new_pack.eX1ndK/_new  2021-07-04 22:10:41.877249907 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           slirp4netns
-Version:        1.1.8
+Version:        1.1.11
 Release:        0
 Summary:        User-mode networking for unprivileged network namespaces
 License:        GPL-2.0-only AND MIT AND BSD-2-Clause
@@ -33,7 +33,6 @@
 BuildRequires:  libcap-devel
 BuildRequires:  libseccomp-devel
 BuildRequires:  libslirp-devel
-BuildRequires:  make
 
 %description
 slirp for network namespaces, without copying buffers across the namespaces.

++++++ _service ++++++
--- /var/tmp/diff_new_pack.eX1ndK/_old  2021-07-04 22:10:41.901249722 +0200
+++ /var/tmp/diff_new_pack.eX1ndK/_new  2021-07-04 22:10:41.901249722 +0200
@@ -1,17 +1,17 @@
 <services>
-
 <service name="tar_scm" mode="disabled">
-<param 
name="url">https://github.com/rootless-containers/slirp4netns.git</param>
-<param name="scm">git</param>
-<param name="filename">slirp4netns</param>
-<param name="versionformat">1.1.8</param>
-<param name="revision">v1.1.8</param>
-<param name="changesgenerate">enable</param>
+  <param 
name="url">https://github.com/rootless-containers/slirp4netns.git</param>
+  <param name="scm">git</param>
+  <param name="filename">slirp4netns</param>
+  <param name="revision">v1.1.11</param>
+  <param name="versionformat">@PARENT_TAG@</param>
+  <param name="versionrewrite-pattern">v(.*)</param>
 </service>
 
 <service name="recompress" mode="disabled">
-<param name="file">*.tar</param>
-<param name="compression">xz</param>
+  <param name="file">*.tar</param>
+  <param name="compression">xz</param>
 </service>
 
+<service name="set_version" mode="disabled" />
 </services>

++++++ slirp4netns-1.1.8.tar.xz -> slirp4netns-1.1.11.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-1.1.8/.github/workflows/main.yaml 
new/slirp4netns-1.1.11/.github/workflows/main.yaml
--- old/slirp4netns-1.1.8/.github/workflows/main.yaml   2020-12-03 
09:21:34.000000000 +0100
+++ new/slirp4netns-1.1.11/.github/workflows/main.yaml  2021-06-15 
07:27:28.000000000 +0200
@@ -5,7 +5,7 @@
     runs-on: ubuntu-20.04
     strategy:
       matrix:
-        libslirp_commit: [master, v4.4.0, v4.3.0, v4.2.0, v4.1.0]
+        libslirp_commit: [master, v4.6.0, v4.5.0, v4.1.0]
     steps:
     - uses: actions/checkout@v2
     - run: docker build -t slirp4netns-tests --build-arg LIBSLIRP_COMMIT -f 
Dockerfile.tests .
@@ -47,7 +47,7 @@
       run: sh ./run-vagrant-tests
       env:
         LIBSECCOMP_COMMIT: v2.5.0
-        LIBSLIRP_COMMIT: v4.4.0
+        LIBSLIRP_COMMIT: v4.6.0
   artifact:
     runs-on: ubuntu-20.04
     steps:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-1.1.8/Dockerfile.artifact 
new/slirp4netns-1.1.11/Dockerfile.artifact
--- old/slirp4netns-1.1.8/Dockerfile.artifact   2020-12-03 09:21:34.000000000 
+0100
+++ new/slirp4netns-1.1.11/Dockerfile.artifact  2021-06-15 07:27:28.000000000 
+0200
@@ -1,4 +1,4 @@
-ARG LIBSLIRP_COMMIT=v4.4.0
+ARG LIBSLIRP_COMMIT=v4.6.0
 ARG DEBIAN_VERSION=10
 
 FROM --platform=$TARGETPLATFORM debian:${DEBIAN_VERSION} AS build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-1.1.8/Dockerfile.buildtests 
new/slirp4netns-1.1.11/Dockerfile.buildtests
--- old/slirp4netns-1.1.8/Dockerfile.buildtests 2020-12-03 09:21:34.000000000 
+0100
+++ new/slirp4netns-1.1.11/Dockerfile.buildtests        2021-06-15 
07:27:28.000000000 +0200
@@ -1,8 +1,8 @@
-ARG LIBSLIRP_COMMIT=v4.4.0
+ARG LIBSLIRP_COMMIT=v4.6.0
 
 # Alpine
 FROM alpine:3 AS buildtest-alpine3-static
-RUN apk add --no-cache git build-base autoconf automake libtool linux-headers 
glib-dev glib-static libcap-static libcap-dev libseccomp-dev git meson
+RUN apk add --no-cache git build-base autoconf automake libtool linux-headers 
glib-dev glib-static libcap-static libcap-dev libseccomp-dev libseccomp-static 
git meson
 RUN git clone https://gitlab.freedesktop.org/slirp/libslirp.git /libslirp
 WORKDIR /libslirp
 ARG LIBSLIRP_COMMIT
@@ -27,27 +27,8 @@
 FROM buildtest-ubuntu1804-common AS buildtest-ubuntu1804-dynamic
 RUN ./configure && make && cp -f slirp4netns /
 
-# CentOS
-FROM centos:7 AS buildtest-centos7-common
-RUN yum install -y epel-release
-RUN yum install -y autoconf automake gcc glib2-devel git make libcap-devel 
libseccomp-devel ninja-build python3-pip
-RUN pip3 install meson
-RUN git clone https://gitlab.freedesktop.org/slirp/libslirp.git /libslirp
-WORKDIR /libslirp
-ARG LIBSLIRP_COMMIT
-RUN  git pull && git checkout ${LIBSLIRP_COMMIT} && meson setup 
--default-library=both --prefix=/usr build && ninja-build -C build install
-COPY . /src
-WORKDIR /src
-RUN ./autogen.sh
-
-FROM buildtest-centos7-common AS buildtest-centos7-dynamic
-RUN ./configure && make && cp -f slirp4netns /
-
-FROM buildtest-centos7-common AS buildtest-centos7-static
-RUN yum install -y glibc-static glib2-static
-RUN yum-config-manager 
--add-repo=https://buildlogs.centos.org/centos/7/virt/x86_64/container && \
- yum install --nogpgcheck -y libseccomp-static
-RUN ./configure LDFLAGS="-static" && make && cp -f slirp4netns /
+# CentOS 7 is no longer tested in this file.
+# See Vagrantfile for CentOS 7 tests.
 
 # openSUSE (dynamic only)
 FROM opensuse/leap:15 AS buildtest-opensuse15-common
@@ -67,6 +48,4 @@
 FROM scratch AS buildtest-final-stage
 COPY --from=buildtest-alpine3-static /slirp4netns /buildtest-alpine3-static
 COPY --from=buildtest-ubuntu1804-dynamic /slirp4netns 
/buildtest-ubuntu1804-dynamic
-COPY --from=buildtest-centos7-dynamic /slirp4netns /buildtest-centos7-dynamic
-COPY --from=buildtest-centos7-static /slirp4netns /buildtest-centos7-static
 COPY --from=buildtest-opensuse15-dynamic /slirp4netns 
/buildtest-opensuse15-dynamic
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-1.1.8/Dockerfile.tests 
new/slirp4netns-1.1.11/Dockerfile.tests
--- old/slirp4netns-1.1.8/Dockerfile.tests      2020-12-03 09:21:34.000000000 
+0100
+++ new/slirp4netns-1.1.11/Dockerfile.tests     2021-06-15 07:27:28.000000000 
+0200
@@ -1,4 +1,4 @@
-ARG LIBSLIRP_COMMIT=v4.4.0
+ARG LIBSLIRP_COMMIT=v4.6.0
 
 FROM ubuntu:20.04 AS build
 ENV DEBIAN_FRONTEND=noninteractive
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-1.1.8/Makefile.am 
new/slirp4netns-1.1.11/Makefile.am
--- old/slirp4netns-1.1.8/Makefile.am   2020-12-03 09:21:34.000000000 +0100
+++ new/slirp4netns-1.1.11/Makefile.am  2021-06-15 07:27:28.000000000 +0200
@@ -5,7 +5,7 @@
 noinst_LIBRARIES = libparson.a
 
 AM_TESTS_ENVIRONMENT = PATH="$(abs_top_builddir):$(PATH)"
-TESTS = tests/test-slirp4netns.sh tests/test-slirp4netns-configure.sh 
tests/test-slirp4netns-exit-fd.sh tests/test-slirp4netns-ready-fd.sh 
tests/test-slirp4netns-api-socket.sh 
tests/test-slirp4netns-disable-host-loopback.sh tests/test-slirp4netns-cidr.sh 
tests/test-slirp4netns-outbound-addr.sh tests/test-slirp4netns-disable-dns.sh 
tests/test-slirp4netns-seccomp.sh
+TESTS = tests/test-slirp4netns.sh tests/test-slirp4netns-configure.sh 
tests/test-slirp4netns-exit-fd.sh tests/test-slirp4netns-ready-fd.sh 
tests/test-slirp4netns-api-socket.sh 
tests/test-slirp4netns-disable-host-loopback.sh tests/test-slirp4netns-cidr.sh 
tests/test-slirp4netns-outbound-addr.sh tests/test-slirp4netns-disable-dns.sh 
tests/test-slirp4netns-seccomp.sh tests/test-slirp4netns-macaddress.sh
 
 EXTRA_DIST = \
        slirp4netns.1.md \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-1.1.8/README.md 
new/slirp4netns-1.1.11/README.md
--- old/slirp4netns-1.1.8/README.md     2020-12-03 09:21:34.000000000 +0100
+++ new/slirp4netns-1.1.11/README.md    2021-06-15 07:27:28.000000000 +0200
@@ -39,6 +39,7 @@
 * [Buildah](https://github.com/containers/buildah)
 * [ctnr](https://github.com/mgoltzsche/ctnr) (via slirp-cni-plugin)
 * [Docker & Moby](https://get.docker.com/rootless) (optionally, via 
RootlessKit)
+* [containerd/nerdctl](https://github.com/containerd/nerdctl) (optionally, via 
RootlessKit)
 
 Tools:
 * [RootlessKit](https://github.com/rootless-containers/rootlesskit)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-1.1.8/configure.ac 
new/slirp4netns-1.1.11/configure.ac
--- old/slirp4netns-1.1.8/configure.ac  2020-12-03 09:21:34.000000000 +0100
+++ new/slirp4netns-1.1.11/configure.ac 2021-06-15 07:27:28.000000000 +0200
@@ -1,5 +1,5 @@
 AC_PREREQ([2.69])
-AC_INIT([slirp4netns], [1.1.8], 
[https://github.com/rootless-containers/slirp4netns/issues])
+AC_INIT([slirp4netns], [1.1.11], 
[https://github.com/rootless-containers/slirp4netns/issues])
 AC_CONFIG_SRCDIR([main.c])
 AC_CONFIG_HEADERS([config.h])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-1.1.8/main.c 
new/slirp4netns-1.1.11/main.c
--- old/slirp4netns-1.1.8/main.c        2020-12-03 09:21:34.000000000 +0100
+++ new/slirp4netns-1.1.11/main.c       2021-06-15 07:27:28.000000000 +0200
@@ -160,6 +160,14 @@
         return -1;
     }
 
+    if (cfg->vmacaddress_len > 0) {
+        ifr.ifr_ifru.ifru_hwaddr = cfg->vmacaddress;
+        if (ioctl(sockfd, SIOCSIFHWADDR, &ifr) < 0) {
+            perror("cannot set MAC address");
+            return -1;
+        }
+    }
+
     sai->sin_family = AF_INET;
     sai->sin_port = 0;
     sai->sin_addr = cfg->recommended_vguest;
@@ -286,6 +294,11 @@
         }
     }
 #endif
+    if (cfg->vmacaddress_len > 0) {
+        unsigned char *mac = (unsigned char *)cfg->vmacaddress.sa_data;
+        printf("* MAC address:     %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0],
+               mac[1], mac[2], mac[3], mac[4], mac[5]);
+    }
     if (!cfg->disable_host_loopback) {
         printf(
             "WARNING: 127.0.0.1:* on the host is accessible as %s (set "
@@ -358,6 +371,8 @@
     printf("--disable-dns            disables 10.0.2.3 (or configured internal 
"
            "ip) to host dns redirect (experimental)\n");
 #endif
+    printf("--macaddress=MAC         specify the MAC address of the TAP (only "
+           "valid with -c)\n");
     /* others */
     printf("-h, --help               show this help and exit\n");
     printf("-v, --version            show version and exit\n");
@@ -399,6 +414,7 @@
     bool enable_sandbox; // --enable-sandbox
     bool enable_seccomp; // --enable-seccomp
     bool disable_dns; // --disable-dns
+    char *macaddress; // --macaddress
 };
 
 static void options_init(struct options *options)
@@ -442,6 +458,10 @@
         free(options->outbound_addr6);
         options->outbound_addr6 = NULL;
     }
+    if (options->macaddress != NULL) {
+        free(options->macaddress);
+        options->macaddress = NULL;
+    }
 }
 
 // * caller does not need to call options_init()
@@ -457,6 +477,7 @@
     char *optarg_api_socket = NULL;
     char *optarg_outbound_addr = NULL;
     char *optarg_outbound_addr6 = NULL;
+    char *optarg_macaddress = NULL;
 #define CIDR -42
 #define DISABLE_HOST_LOOPBACK -43
 #define NETNS_TYPE -44
@@ -466,6 +487,7 @@
 #define OUTBOUND_ADDR -48
 #define OUTBOUND_ADDR6 -49
 #define DISABLE_DNS -50
+#define MACADDRESS -51
 #define _DEPRECATED_NO_HOST_LOOPBACK \
     -10043 // deprecated in favor of disable-host-loopback
 #define _DEPRECATED_CREATE_SANDBOX \
@@ -490,6 +512,7 @@
         { "outbound-addr", required_argument, NULL, OUTBOUND_ADDR },
         { "outbound-addr6", required_argument, NULL, OUTBOUND_ADDR6 },
         { "disable-dns", no_argument, NULL, DISABLE_DNS },
+        { "macaddress", required_argument, NULL, MACADDRESS },
         { 0, 0, 0, 0 },
     };
     options_init(options);
@@ -589,6 +612,9 @@
         case DISABLE_DNS:
             options->disable_dns = true;
             break;
+        case MACADDRESS:
+            optarg_macaddress = optarg;
+            break;
         default:
             goto error;
             break;
@@ -612,6 +638,15 @@
     if (optarg_outbound_addr6 != NULL) {
         options->outbound_addr6 = strdup(optarg_outbound_addr6);
     }
+    if (optarg_macaddress != NULL) {
+        if (!options->do_config_network) {
+            fprintf(stderr, "--macaddr cannot be specified when --configure or 
"
+                            "-c is not specified\n");
+            goto error;
+        } else {
+            options->macaddress = strdup(optarg_macaddress);
+        }
+    }
 #undef CIDR
 #undef DISABLE_HOST_LOOPBACK
 #undef NETNS_TYPE
@@ -622,6 +657,7 @@
 #undef OUTBOUND_ADDR
 #undef OUTBOUND_ADDR6
 #undef DISABLE_DNS
+#undef MACADDRESS
     if (argc - optind < 2) {
         goto error;
     }
@@ -772,6 +808,37 @@
     return -1;
 }
 
+/*
+ * Convert a MAC string (macaddr) to bytes (data).
+ * macaddr must be a null-terminated string in the format of
+ * xx:xx:xx:xx:xx:xx.  The data buffer needs to be at least 6 bytes.
+ * Typically the data is put into sockaddr sa_data, which is 14 bytes.
+ */
+static int slirp4netns_macaddr_hexstring_to_data(char *macaddr, char *data)
+{
+    int temp;
+    char *macaddr_ptr;
+    char *data_ptr;
+    for (macaddr_ptr = macaddr, data_ptr = data;
+         macaddr_ptr != NULL && data_ptr < data + 6;
+         macaddr_ptr = strchr(macaddr_ptr, ':'), data_ptr++) {
+        if (macaddr_ptr != macaddr) {
+            macaddr_ptr++; // advance over the :
+        }
+        if (sscanf(macaddr_ptr, "%x", &temp) != 1 || temp < 0 || temp > 255) {
+            fprintf(stderr, "\"%s\" is an invalid MAC address.\n", macaddr);
+            return -1;
+        }
+        *data_ptr = temp;
+    }
+    if (macaddr_ptr != NULL) {
+        fprintf(stderr, "\"%s\" is an invalid MAC address.  Is it too long?\n",
+                macaddr);
+        return -1;
+    }
+    return (int)(data_ptr - data);
+}
+
 static int slirp4netns_config_from_options(struct slirp4netns_config *cfg,
                                            struct options *opt)
 {
@@ -851,6 +918,21 @@
         goto finish;
     }
 #endif
+
+    cfg->vmacaddress_len = 0;
+    memset(&cfg->vmacaddress, 0, sizeof(cfg->vmacaddress));
+    if (opt->macaddress != NULL) {
+        cfg->vmacaddress.sa_family = AF_LOCAL;
+        int macaddr_len;
+        if ((macaddr_len = slirp4netns_macaddr_hexstring_to_data(
+                 opt->macaddress, cfg->vmacaddress.sa_data)) < 0) {
+            fprintf(stderr, "macaddress has to be a valid MAC address (hex "
+                            "string, 6 bytes, each byte separated by a ':').");
+            rc = -1;
+            goto finish;
+        }
+        cfg->vmacaddress_len = macaddr_len;
+    }
 finish:
     return rc;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-1.1.8/slirp4netns.1 
new/slirp4netns-1.1.11/slirp4netns.1
--- old/slirp4netns-1.1.8/slirp4netns.1 2020-12-03 09:21:34.000000000 +0100
+++ new/slirp4netns-1.1.11/slirp4netns.1        2021-06-15 07:27:28.000000000 
+0200
@@ -124,6 +124,10 @@
 disable built\-in DNS (10.0.2.3 by default)
 
 .PP
+\fB\fC\-\-macaddress\fR (since v1.1.9)
+specify MAC address of the TAP interface (only valid with \-c)
+
+.PP
 \fB\fC\-h\fR, \fB\fC\-\-help\fR (since v0.2.0)
 show help and exit
 
@@ -275,7 +279,7 @@
 .RS
 
 .nf
-(host)$ nsenter \-t $(cat /tmp/pid) \-U \-n
+(host)$ nsenter \-t $(cat /tmp/pid) \-U \-\-preserve\-credentials \-n
 (namespace)$ iptables \-A OUTPUT \-d 10.0.2.3 \-p udp \-\-dport 53 \-j ACCEPT
 (namespace)$ iptables \-A OUTPUT \-d 10.0.2.3 \-j DROP
 
@@ -424,7 +428,7 @@
 .RS
 
 .nf
-(host)$ nsenter \-t $(cat /tmp/pid) \-U \-n \-m
+(host)$ nsenter \-t $(cat /tmp/pid) \-U \-\-preserve\-credentials \-n \-m
 (namespace)$ mount \-t tmpfs none /run
 (namespace)$ ip netns add foo
 (namespace)$ ip netns add bar
@@ -454,12 +458,12 @@
 
 .nf
 (host)$ vde\_plug \-\-daemon switch:///tmp/switch null://
-(host)$ nsenter \-t $(cat /tmp/pid\-instance0) \-U \-n
+(host)$ nsenter \-t $(cat /tmp/pid\-instance0) \-U \-\-preserve\-credentials 
\-n
 (namespace\-instance0)$ vde\_plug \-\-daemon vde:///tmp/switch tap://vde
 (namespace\-instance0)$ ip link set vde up
 (namespace\-instance0)$ ip addr add 192.168.42.100/24 dev vde
 (namespace\-instance0)$ exit
-(host)$ nsenter \-t $(cat /tmp/pid\-instance1) \-U \-n
+(host)$ nsenter \-t $(cat /tmp/pid\-instance1) \-U \-\-preserve\-credentials 
\-n
 (namespace\-instance1)$ vde\_plug \-\-daemon vde:///tmp/switch tap://vde
 (namespace\-instance1)$ ip link set vde up
 (namespace\-instance1)$ ip addr add 192.168.42.101/24 dev vde
@@ -488,7 +492,7 @@
 .RS
 
 .nf
-(host)$ nsenter \-t $(cat /tmp/pid) \-U \-n \-m
+(host)$ nsenter \-t $(cat /tmp/pid) \-U \-\-preserve\-credentials \-n \-m
 (namespace)$ c=$(cat /proc/sys/net/ipv4/tcp\_rmem); echo $c | sed \-e 
s/131072/87380/g > /proc/sys/net/ipv4/tcp\_rmem
 
 .fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-1.1.8/slirp4netns.1.md 
new/slirp4netns-1.1.11/slirp4netns.1.md
--- old/slirp4netns-1.1.8/slirp4netns.1.md      2020-12-03 09:21:34.000000000 
+0100
+++ new/slirp4netns-1.1.11/slirp4netns.1.md     2021-06-15 07:27:28.000000000 
+0200
@@ -90,6 +90,9 @@
 `--disable-dns` (since v1.1.0)
 disable built-in DNS (10.0.2.3 by default)
 
+`--macaddress` (since v1.1.9)
+specify MAC address of the TAP interface (only valid with -c)
+
 `-h`, `--help` (since v0.2.0)
 show help and exit
 
@@ -189,7 +192,7 @@
 You may want to set up iptables for limiting access to the built-in DNS in 
such a case.
 
 ```console
-(host)$ nsenter -t $(cat /tmp/pid) -U -n
+(host)$ nsenter -t $(cat /tmp/pid) -U --preserve-credentials -n
 (namespace)$ iptables -A OUTPUT -d 10.0.2.3 -p udp --dport 53 -j ACCEPT
 (namespace)$ iptables -A OUTPUT -d 10.0.2.3 -j DROP
 ```
@@ -269,7 +272,7 @@
 The easiest way to allow inter-namespace communication is to nest network 
namespaces inside the slirp4netns's network namespace.
 
 ```console
-(host)$ nsenter -t $(cat /tmp/pid) -U -n -m
+(host)$ nsenter -t $(cat /tmp/pid) -U --preserve-credentials -n -m
 (namespace)$ mount -t tmpfs none /run
 (namespace)$ ip netns add foo
 (namespace)$ ip netns add bar
@@ -293,12 +296,12 @@
 
 ```console
 (host)$ vde_plug --daemon switch:///tmp/switch null://
-(host)$ nsenter -t $(cat /tmp/pid-instance0) -U -n
+(host)$ nsenter -t $(cat /tmp/pid-instance0) -U --preserve-credentials -n
 (namespace-instance0)$ vde_plug --daemon vde:///tmp/switch tap://vde
 (namespace-instance0)$ ip link set vde up
 (namespace-instance0)$ ip addr add 192.168.42.100/24 dev vde
 (namespace-instance0)$ exit
-(host)$ nsenter -t $(cat /tmp/pid-instance1) -U -n
+(host)$ nsenter -t $(cat /tmp/pid-instance1) -U --preserve-credentials -n
 (namespace-instance1)$ vde_plug --daemon vde:///tmp/switch tap://vde
 (namespace-instance1)$ ip link set vde up
 (namespace-instance1)$ ip addr add 192.168.42.101/24 dev vde
@@ -319,7 +322,7 @@
 No real root privilege is needed to modify the file since kernel 4.15.
 
 ```console
-(host)$ nsenter -t $(cat /tmp/pid) -U -n -m
+(host)$ nsenter -t $(cat /tmp/pid) -U --preserve-credentials -n -m
 (namespace)$ c=$(cat /proc/sys/net/ipv4/tcp_rmem); echo $c | sed -e 
s/131072/87380/g > /proc/sys/net/ipv4/tcp_rmem
 ```
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-1.1.8/slirp4netns.h 
new/slirp4netns-1.1.11/slirp4netns.h
--- old/slirp4netns-1.1.8/slirp4netns.h 2020-12-03 09:21:34.000000000 +0100
+++ new/slirp4netns-1.1.11/slirp4netns.h        2021-06-15 07:27:28.000000000 
+0200
@@ -25,6 +25,8 @@
 #if SLIRP_CONFIG_VERSION_MAX >= 3
     bool disable_dns;
 #endif
+    struct sockaddr vmacaddress; // MAC address of interface
+    int vmacaddress_len; // MAC address byte length
 };
 int do_slirp(int tapfd, int readyfd, int exitfd, const char *api_socket,
              struct slirp4netns_config *cfg);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/slirp4netns-1.1.8/tests/test-slirp4netns-macaddress.sh 
new/slirp4netns-1.1.11/tests/test-slirp4netns-macaddress.sh
--- old/slirp4netns-1.1.8/tests/test-slirp4netns-macaddress.sh  1970-01-01 
01:00:00.000000000 +0100
+++ new/slirp4netns-1.1.11/tests/test-slirp4netns-macaddress.sh 2021-06-15 
07:27:28.000000000 +0200
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -xeuo pipefail
+
+. $(dirname $0)/common.sh
+MACADDRESS="0e:d4:18:d9:38:fb"
+
+unshare -r -n sleep infinity &
+child=$!
+
+wait_for_network_namespace $child
+
+function cleanup {
+    kill -9 $child $slirp_pid
+}
+trap cleanup EXIT
+
+slirp4netns -c --macaddress $MACADDRESS $child tun11 &
+slirp_pid=$!
+
+wait_for_network_device $child tun11
+
+result=$(nsenter --preserve-credentials -U -n --target=$child ip addr show 
tun11 | grep -o "ether $MACADDRESS")
+
+if [ -z "$result" ]; then
+  printf "expecting %s MAC address on the interface but didn't get it" 
"$MACADDRESS"
+  exit 1
+fi
+
+cleanup

Reply via email to