summaryrefslogtreecommitdiff
path: root/slirp4netns.c
diff options
context:
space:
mode:
authorAkihiro Suda <suda.akihiro@lab.ntt.co.jp>2018-08-02 14:57:24 +0900
committerAkihiro Suda <suda.akihiro@lab.ntt.co.jp>2018-08-02 15:10:21 +0900
commitea630a7e945cf538184ff1b1b4bd7b8ddc01993e (patch)
treed8c4ca34825ea867133816774365cf2d9c58814b /slirp4netns.c
parent02ab805e2b3cbe20e97ea22b8bd4c75b24d46bc7 (diff)
allow custom MTU
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
Diffstat (limited to 'slirp4netns.c')
-rw-r--r--slirp4netns.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/slirp4netns.c b/slirp4netns.c
index 66df100..b77457a 100644
--- a/slirp4netns.c
+++ b/slirp4netns.c
@@ -21,7 +21,7 @@ void slirp_output(void *opaque, const uint8_t * pkt, int pkt_len)
assert(rc == pkt_len);
}
-Slirp *create_slirp(void *opaque)
+Slirp *create_slirp(void *opaque, unsigned int mtu)
{
Slirp *slirp = NULL;
struct in_addr vnetwork, vnetmask, vhost, vdhcp_start, vnameserver;
@@ -35,6 +35,7 @@ Slirp *create_slirp(void *opaque)
vnetwork, vnetmask, vhost, 0 /* ip6_enabled */ , vprefix_addr6, 0 /* vprefix_len */ , vhost6,
NULL /* vhostname */ , NULL /* bootfile */ , vdhcp_start,
vnameserver, vnameserver6, NULL /* vdnssearch */ , NULL /* vdomainname */ ,
+ mtu /* if_mtu */ , mtu /* if_mru */ ,
opaque);
if (slirp == NULL) {
fprintf(stderr, "slirp_init failed\n");
@@ -44,7 +45,7 @@ Slirp *create_slirp(void *opaque)
#define ETH_BUF_SIZE (65536)
-int do_slirp(int tapfd, int exitfd)
+int do_slirp(int tapfd, int exitfd, unsigned int mtu)
{
int ret = -1;
Slirp *slirp = NULL;
@@ -55,7 +56,7 @@ int do_slirp(int tapfd, int exitfd)
struct pollfd tap_pollfd = { tapfd, POLLIN | POLLHUP, 0 };
struct pollfd exit_pollfd = { exitfd, POLLHUP, 0 };
- slirp = create_slirp((void *)&opaque);
+ slirp = create_slirp((void *)&opaque, mtu);
if (slirp == NULL) {
fprintf(stderr, "create_slirp failed\n");
goto err;