diff options
author | 2018-11-29 00:12:34 +0000 | |
---|---|---|
committer | 2018-11-29 00:12:34 +0000 | |
commit | 806b0dffecf425cd08444be58c166372317b97a1 (patch) | |
tree | 79bfda9a35f799b6497a7f8ac656d7c1ee3b24df | |
parent | restrict setting ecn to root (diff) | |
download | wireguard-openbsd-806b0dffecf425cd08444be58c166372317b97a1.tar.xz wireguard-openbsd-806b0dffecf425cd08444be58c166372317b97a1.zip |
handle tunnel ecn configuration and reporting.
tested with normal and special ifconfig builds.
ok claudio@
-rw-r--r-- | sbin/ifconfig/ifconfig.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/sbin/ifconfig/ifconfig.c b/sbin/ifconfig/ifconfig.c index a08d3a32728..e540fd33e67 100644 --- a/sbin/ifconfig/ifconfig.c +++ b/sbin/ifconfig/ifconfig.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ifconfig.c,v 1.386 2018/11/25 12:14:01 phessler Exp $ */ +/* $OpenBSD: ifconfig.c,v 1.387 2018/11/29 00:12:34 dlg Exp $ */ /* $NetBSD: ifconfig.c,v 1.40 1997/10/01 02:19:43 enami Exp $ */ /* @@ -295,6 +295,8 @@ void gettxprio(struct ifencap *); void settxprio(const char *, int); void settunneldf(const char *, int); void settunnelnodf(const char *, int); +void settunnelecn(const char *, int); +void settunnelnoecn(const char *, int); void setpppoe_dev(const char *,int); void setpppoe_svc(const char *,int); void setpppoe_ac(const char *,int); @@ -489,6 +491,8 @@ const struct cmd { { "tunnelttl", NEXTARG, 0, settunnelttl }, { "tunneldf", 0, 0, settunneldf }, { "-tunneldf", 0, 0, settunnelnodf }, + { "tunnelecn", 0, 0, settunnelecn }, + { "-tunnelecn", 0, 0, settunnelnoecn }, { "vnetflowid", 0, 0, setvnetflowid }, { "-vnetflowid", 0, 0, delvnetflowid }, { "txprio", NEXTARG, 0, settxprio }, @@ -3146,6 +3150,9 @@ phys_status(int force) printf(" %s", ifr.ifr_df ? "df" : "nodf"); #ifndef SMALL + if (ioctl(s, SIOCGLIFPHYECN, (caddr_t)&ifr) == 0) + printf(" %s", ifr.ifr_metric ? "ecn" : "noecn"); + if (ioctl(s, SIOCGLIFPHYRTABLE, (caddr_t)&ifr) == 0 && (rdomainid != 0 || ifr.ifr_rdomainid != 0)) printf(" rdomain %d", ifr.ifr_rdomainid); @@ -3738,6 +3745,24 @@ settunnelnodf(const char *ignored, int alsoignored) } void +settunnelecn(const char *ignored, int alsoignored) +{ + strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); + ifr.ifr_metric = 1; + if (ioctl(s, SIOCSLIFPHYECN, (caddr_t)&ifr) < 0) + warn("SIOCSLIFPHYECN"); +} + +void +settunnelnoecn(const char *ignored, int alsoignored) +{ + strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); + ifr.ifr_metric = 0; + if (ioctl(s, SIOCSLIFPHYECN, (caddr_t)&ifr) < 0) + warn("SIOCSLIFPHYECN"); +} + +void setvnetflowid(const char *ignored, int alsoignored) { if (strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)) >= |