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