summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordlg <dlg@openbsd.org>2018-11-29 00:12:34 +0000
committerdlg <dlg@openbsd.org>2018-11-29 00:12:34 +0000
commit806b0dffecf425cd08444be58c166372317b97a1 (patch)
tree79bfda9a35f799b6497a7f8ac656d7c1ee3b24df
parentrestrict setting ecn to root (diff)
downloadwireguard-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.c27
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)) >=