From fc1fff6b7b6d22d366eaaf7a78d60ede2ddc68c5 Mon Sep 17 00:00:00 2001 From: doktornotor Date: Fri, 17 Feb 2017 01:44:13 +0100 Subject: [PATCH 01/12] Clean up descriptions, set required fields, split PHP code to softflowd.inc --- .../files/usr/local/pkg/softflowd.xml | 251 ++++++------------ 1 file changed, 84 insertions(+), 167 deletions(-) diff --git a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml index 13985fdd9a57..ba0605b4ebf9 100644 --- a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml +++ b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml @@ -8,7 +8,7 @@ * softflowd.xml * * part of pfSense (https://www.pfsense.org) - * Copyright (c) 2013-2015 Rubicon Communications, LLC (Netgate) + * Copyright (c) 2013-2017 Rubicon Communications, LLC (Netgate) * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -27,13 +27,14 @@ softflowd softflowd: Settings - pkg_edit.php?xml=softflowd.xml&id=0 + /usr/local/pkg/softflowd.inc + /pkg_edit.php?xml=softflowd.xml softflowd Modify softflowd settings.
Services
softflowd.xml - /pkg_edit.php?xml=softflowd.xml&id=0 + /pkg_edit.php?xml=softflowd.xml
softflowd @@ -41,7 +42,6 @@ softflowd Netflow export daemon - installedpackages->package->$packagename->configuration->settings General Settings @@ -59,23 +59,35 @@ host Specify the host to which datagrams will be sent. input + Port port Enter the port to which datagrams will be sent. input + Max Flows maxflows - Specify the maximum number of flows to concurrently track before older flows are expired. Default: 8192. + + Default: 8192. + ]]> + input Hop Limit hoplimit - Set the IPv4 TTL or the IPv6 hop limit to hoplimit. softflowd will use the default system TTL when exporting flows to a unicast host. When exporting to a multicast group, the default TTL will be 1 (i.e. link-local). + + + When exporting to a multicast group, the default TTL will be 1 (i.e. link-local). + ]]> + input @@ -84,39 +96,38 @@ Select the desired version of the NetFlow protocol. select - - - + + + + Flow Tracking Level flowtracking - Specify which flow elements softflowd should be used to define a flow. track_level may be one of: "full" (track everything in the flow, the default), "proto" (track source and destination addresses and protocol), or "ip" (only track source and destination addresses). Selecting either of the latter options will produce flows with less information in them (e.g. TCP/UDP ports will not be recorded). This will cause flows to be consolidated, reducing the quantity of output and CPU load that softflowd will place on the system at the cost of some detail being lost. + + Click Info for details. +
+ The track_level value may be one of:
+
+
full
Track everything in the flow, the default.
+
proto
Track source and destination addresses and protocol.
+
ip
Only track source and destination addresses.
+
+ Selecting either of the latter options will produce flows with less information in them (e.g. TCP/UDP ports will not be recorded). + This will cause flows to be consolidated, reducing the quantity of output and CPU load that softflowd will place on the system at + the cost of some detail being lost. +
+ ]]> +
select - - - + + + +
Timeout Values @@ -125,175 +136,81 @@ General timeout-general - (Seconds) This is the general timeout applied to all traffic unless overridden by one of the other timeouts. + + Specify value in seconds. + ]]> + input Maximum Lifetime timeout-maxlife - (Seconds) This is the maximum lifetime that a flow may exist for. All flows are forcibly expired when they pass maxlife seconds. To disable this feature, specify a maxlife of 0. + + + Specify value in seconds. To disable this feature, specify a maxlife of 0. + ]]> + input Expire Interval timeout-expint - (Seconds) Specify the interval between expiry checks. Increase this to group more flows into a NetFlow packet. To disable this feature, specify a expint of 0. + + + Specify value in seconds. To disable this feature, specify 0. + ]]> + input TCP timeout-tcp - (Seconds) This is the general TCP timeout, applied to open TCP connections. + + Specify value in seconds. + ]]> + input TCP RST timeout-tcp-rst - (Seconds) This timeout is applied to a TCP connection when a RST packet has been sent by one or both endpoints. + + Specify value in seconds. + ]]> + input TCP FIN timeout-tcp-fin - (Seconds) This timeout is applied to a TCP connection when a FIN packet has been sent by both endpoints. + + Specify value in seconds. + ]]> + input UDP timeout-udp - (Seconds) This is the general UDP timeout, applied to all UDP connections. + + Specify value in seconds. + ]]> + input
- - "softflowd.sh", - "start" => $start, - "stop" => "/usr/bin/killall -9 softflowd" - ) - ); - /* Only try to restart if not booting */ - if (function_exists("platform_booting")) { - if (!platform_booting()) { - restart_service("softflowd"); - } - } elseif (!($g['booting'])) { - restart_service("softflowd"); - } - } - conf_mount_ro(); - } - - function validate_form_softflowd($post, &$input_errors) { - if (($post['host'] == "") || !is_ipaddr($post['host'])) { - $input_errors[] = 'You must specify a valid ip address in the \'Host\' field'; - } - if (($post['port'] == "") || !is_port($post['port'])) { - $input_errors[] = 'You must specify a valid port number in the \'Port\' field'; - } - if (($post['version'] == "" || !in_array($post['version'], array(1, 5, 9)))) { - $input_errors[] = 'You must specify a netflow version'; - } - if (($post['flowtracking'] == "" || !in_array($post['flowtracking'], array("full", "proto", "ip")))) { - $input_errors[] = 'You must specify a valid flow tracking selection'; - } - if (!empty($post['hoplimit']) && (!is_numeric($post['hoplimit']) || ($post['hoplimit'] < 1) || ($post['hoplimit'] > 255))) { - $input_errors[] = 'You must specify a valid hop limit'; - } - if (!empty($post['timeout-general']) && (!is_numeric($post['timeout-general']) || ($post['timeout-general'] < 0))) { - $input_errors[] = 'You must specify a valid General Timeout'; - } - if (!empty($post['timeout-maxlife']) && (!is_numeric($post['timeout-maxlife']) || ($post['timeout-maxlife'] < 0))) { - $input_errors[] = 'You must specify a valid Maximum Lifetime Timeout'; - } - if (!empty($post['timeout-expint']) && (!is_numeric($post['timeout-expint']) || ($post['timeout-expint'] < 0))) { - $input_errors[] = 'You must specify a valid Expire Interval'; - } - if (!empty($post['timeout-tcp']) && (!is_numeric($post['timeout-tcp']) || ($post['timeout-tcp'] < 0))) { - $input_errors[] = 'You must specify a valid TCP Timeout'; - } - if (!empty($post['timeout-tcp-rst']) && (!is_numeric($post['timeout-tcp-rst']) || ($post['timeout-tcp-rst'] < 0))) { - $input_errors[] = 'You must specify a valid TCP RST Timeout'; - } - if (!empty($post['timeout-tcp-fin']) && (!is_numeric($post['timeout-tcp-fin']) || ($post['timeout-tcp-fin'] < 0))) { - $input_errors[] = 'You must specify a valid TCP FIN Timeout'; - } - if (!empty($post['timeout-udp']) && (!is_numeric($post['timeout-udp']) || ($post['timeout-udp'] < 0))) { - $input_errors[] = 'You must specify a valid UDP Timeout'; - } - } - - function cleanup_config_softflowd() { - global $a_pkg; - $pffconf = array(); - if (is_array($a_pkg)) { - foreach($a_pkg as $cf) { - if ($cf['host'] != "") { - $pffconf = $cf; - } - } - } - $a_pkg = array(); - $a_pkg[0] = $pffconf; - } - ]]> - sync_package_softflowd(); From 2fe7021b517775694be26fd89bc0fc524168c7dc Mon Sep 17 00:00:00 2001 From: doktornotor Date: Fri, 17 Feb 2017 01:50:43 +0100 Subject: [PATCH 02/12] Split PHP code to softflowd.inc, improve input validations, clean up --- .../files/usr/local/pkg/softflowd.inc | 155 ++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc diff --git a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc new file mode 100644 index 000000000000..44aaa35a38ca --- /dev/null +++ b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc @@ -0,0 +1,155 @@ + "softflowd.sh", + "start" => $start, + "stop" => "/usr/bin/killall -9 softflowd" + ) + ); + /* Only try to restart if not booting */ + if (!platform_booting()) { + if (is_service_running("softflowd")) { + restart_service("softflowd"); + } else { + start_service("softflowd"); + } + } + } + conf_mount_ro(); +} + +function validate_form_softflowd($post, &$input_errors) { + if (!is_ipaddr($post['host'])) { + $input_errors[] = "You must specify a valid ip address in the 'Host' field"; + } + if (!is_port($post['port'])) { + $input_errors[] = "You must specify a valid port number in the 'Port' field"; + } + if (!in_array($post['version'], array(1, 5, 9))) { + $input_errors[] = 'You must specify a netflow version'; + } + if (!in_array($post['flowtracking'], array("full", "proto", "ip"))) { + $input_errors[] = 'You must specify a valid flow tracking selection'; + } + if (!empty($post['hoplimit']) && (!is_numericint($post['hoplimit']) || ($post['hoplimit'] < 1) || ($post['hoplimit'] > 255))) { + $input_errors[] = 'You must specify a valid hop limit'; + } + if (!empty($post['timeout-general']) && !is_numericint($post['timeout-general'])) { + $input_errors[] = 'You must specify a valid General Timeout'; + } + if (!empty($post['timeout-maxlife']) && !is_numericint($post['timeout-maxlife'])) { + $input_errors[] = 'You must specify a valid Maximum Lifetime Timeout'; + } + if (!empty($post['timeout-expint']) && !is_numericint($post['timeout-expint'])) { + $input_errors[] = 'You must specify a valid Expire Interval'; + } + if (!empty($post['timeout-tcp']) && !is_numericint($post['timeout-tcp'])) { + $input_errors[] = 'You must specify a valid TCP Timeout'; + } + if (!empty($post['timeout-tcp-rst']) && !is_numericint($post['timeout-tcp-rst'])) { + $input_errors[] = 'You must specify a valid TCP RST Timeout'; + } + if (!empty($post['timeout-tcp-fin']) && !is_numericint($post['timeout-tcp-fin'])) { + $input_errors[] = 'You must specify a valid TCP FIN Timeout'; + } + if (!empty($post['timeout-udp']) && !is_numericint($post['timeout-udp'])) { + $input_errors[] = 'You must specify a valid UDP Timeout'; + } +} + +function cleanup_config_softflowd() { + global $a_pkg; + $pffconf = array(); + if (is_array($a_pkg)) { + foreach($a_pkg as $cf) { + if ($cf['host'] != "") { + $pffconf = $cf; + } + } + } + $a_pkg = array(); + $a_pkg[0] = $pffconf; +} + +?> From 4a0fd65ac96d6d7aaf1174318e95199247f6b723 Mon Sep 17 00:00:00 2001 From: doktornotor Date: Fri, 17 Feb 2017 01:54:32 +0100 Subject: [PATCH 03/12] Add new file - split PHP code to softflowd.inc --- net-mgmt/pfSense-pkg-softflowd/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net-mgmt/pfSense-pkg-softflowd/Makefile b/net-mgmt/pfSense-pkg-softflowd/Makefile index 4853d9346be6..a54a1fc2f14f 100644 --- a/net-mgmt/pfSense-pkg-softflowd/Makefile +++ b/net-mgmt/pfSense-pkg-softflowd/Makefile @@ -27,7 +27,9 @@ do-extract: do-install: ${MKDIR} ${STAGEDIR}${PREFIX}/pkg ${MKDIR} ${STAGEDIR}${DATADIR} - ${INSTALL_DATA} -m 0644 ${FILESDIR}${PREFIX}/pkg/softflowd.xml \ + ${INSTALL_DATA} ${FILESDIR}${PREFIX}/pkg/softflowd.xml \ + ${STAGEDIR}${PREFIX}/pkg + ${INSTALL_DATA} ${FILESDIR}${PREFIX}/pkg/softflowd.inc \ ${STAGEDIR}${PREFIX}/pkg ${INSTALL_DATA} ${FILESDIR}${DATADIR}/info.xml \ ${STAGEDIR}${DATADIR} From 79f2832046e921b62f9055d5d892fec62f774c8b Mon Sep 17 00:00:00 2001 From: doktornotor Date: Fri, 17 Feb 2017 01:59:54 +0100 Subject: [PATCH 04/12] Split PHP code to softflowd.inc, add privileges settings --- net-mgmt/pfSense-pkg-softflowd/pkg-plist | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net-mgmt/pfSense-pkg-softflowd/pkg-plist b/net-mgmt/pfSense-pkg-softflowd/pkg-plist index fe3b01129a56..242811aade6b 100644 --- a/net-mgmt/pfSense-pkg-softflowd/pkg-plist +++ b/net-mgmt/pfSense-pkg-softflowd/pkg-plist @@ -1,2 +1,6 @@ +pkg/softflowd.inc pkg/softflowd.xml +/etc/inc/priv/softflowd.priv.inc %%DATADIR%%/info.xml +@dir /etc/inc/priv +@dir /etc/inc From 63f2a26866a3e5123d0643ceb08e2bd5d1bd79f8 Mon Sep 17 00:00:00 2001 From: doktornotor Date: Fri, 17 Feb 2017 02:02:40 +0100 Subject: [PATCH 05/12] Add privileges settings --- net-mgmt/pfSense-pkg-softflowd/Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net-mgmt/pfSense-pkg-softflowd/Makefile b/net-mgmt/pfSense-pkg-softflowd/Makefile index a54a1fc2f14f..19794efecc3e 100644 --- a/net-mgmt/pfSense-pkg-softflowd/Makefile +++ b/net-mgmt/pfSense-pkg-softflowd/Makefile @@ -1,8 +1,7 @@ # $FreeBSD$ PORTNAME= pfSense-pkg-softflowd -PORTVERSION= 1.2.1 -PORTREVISION= 2 +PORTVERSION= 1.2.2 CATEGORIES= net-mgmt MASTER_SITES= # empty DISTFILES= # empty @@ -27,6 +26,9 @@ do-extract: do-install: ${MKDIR} ${STAGEDIR}${PREFIX}/pkg ${MKDIR} ${STAGEDIR}${DATADIR} + ${MKDIR} ${STAGEDIR}/etc/inc/priv + ${INSTALL_DATA} ${FILESDIR}/etc/inc/priv/softflowd.priv.inc \ + ${STAGEDIR}/etc/inc/priv ${INSTALL_DATA} ${FILESDIR}${PREFIX}/pkg/softflowd.xml \ ${STAGEDIR}${PREFIX}/pkg ${INSTALL_DATA} ${FILESDIR}${PREFIX}/pkg/softflowd.inc \ From 88e0d4a4d8c90e976b867153daa889d20db766d4 Mon Sep 17 00:00:00 2001 From: doktornotor Date: Fri, 17 Feb 2017 02:06:44 +0100 Subject: [PATCH 06/12] Add privileges settings to softflowd --- .../files/etc/inc/priv/softflowd.priv.inc | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 net-mgmt/pfSense-pkg-softflowd/files/etc/inc/priv/softflowd.priv.inc diff --git a/net-mgmt/pfSense-pkg-softflowd/files/etc/inc/priv/softflowd.priv.inc b/net-mgmt/pfSense-pkg-softflowd/files/etc/inc/priv/softflowd.priv.inc new file mode 100644 index 000000000000..07de50da110f --- /dev/null +++ b/net-mgmt/pfSense-pkg-softflowd/files/etc/inc/priv/softflowd.priv.inc @@ -0,0 +1,32 @@ + From 0cd58ec323031a24c47c99d837f68385b476c981 Mon Sep 17 00:00:00 2001 From: doktornotor Date: Fri, 17 Feb 2017 09:36:00 +0100 Subject: [PATCH 07/12] Add enable/disable toggle to softflowd --- .../files/usr/local/pkg/softflowd.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml index ba0605b4ebf9..50d1f2a86eda 100644 --- a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml +++ b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml @@ -47,6 +47,16 @@ General Settings listtopic + + Enable softflowd + enable_softflowd + select + enabled + + + + + Interface interface From 61dfea72a44eb1741a59528fe5bb74b002bfe74a Mon Sep 17 00:00:00 2001 From: doktornotor Date: Fri, 17 Feb 2017 09:40:09 +0100 Subject: [PATCH 08/12] Add enable/disable toggle to softflowd --- .../files/usr/local/pkg/softflowd.inc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc index 44aaa35a38ca..e07b19feeead 100644 --- a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc +++ b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc @@ -28,9 +28,13 @@ require_once("util.inc"); function sync_package_softflowd() { global $config; - $cf = $config['installedpackages']['softflowd']['config'][0]; + if (is_array($config['installedpackages']['softflowd']['config'][0])) { + $cf = $config['installedpackages']['softflowd']['config'][0]; + } else { + $cf = array(); + } $interface_list = explode(",", $cf['interface']); - if (!empty($cf['host']) && !empty($interface_list)) { + if (!empty($cf['host']) && !empty($interface_list) && $cf['enable_softflowd'] != "disabled") { conf_mount_rw(); $cf['host'] = is_ipaddrv6($cf['host']) ? "[{$cf['host']}]" : $cf['host']; $start = "/usr/bin/killall -9 softflowd"; @@ -95,6 +99,10 @@ function sync_package_softflowd() { start_service("softflowd"); } } + } else { + conf_mount_rw(); + stop_service("softflowd"); + unlink_if_exists("/usr/local/etc/rc.d/softflowd.sh"); } conf_mount_ro(); } From a8e2648e676c195a07b3e43b0e1f21f1d9b7555c Mon Sep 17 00:00:00 2001 From: doktornotor Date: Fri, 17 Feb 2017 10:47:24 +0100 Subject: [PATCH 09/12] Rename so that is_service_enabled() works properly So that we do not clutter Services Status widget with disabled services. --- .../pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml index 50d1f2a86eda..ae93ef2ad545 100644 --- a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml +++ b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.xml @@ -49,12 +49,12 @@ Enable softflowd - enable_softflowd + enable select enabled - + From 60ab105d0d23288e13694e6ad5b0166f51b0a234 Mon Sep 17 00:00:00 2001 From: doktornotor Date: Fri, 17 Feb 2017 10:48:52 +0100 Subject: [PATCH 10/12] Use "off" for disabled service value --- .../pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc index e07b19feeead..ec1bb4d09ef3 100644 --- a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc +++ b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc @@ -34,7 +34,7 @@ function sync_package_softflowd() { $cf = array(); } $interface_list = explode(",", $cf['interface']); - if (!empty($cf['host']) && !empty($interface_list) && $cf['enable_softflowd'] != "disabled") { + if (!empty($cf['host']) && !empty($interface_list) && $cf['enable_softflowd'] != "off") { conf_mount_rw(); $cf['host'] = is_ipaddrv6($cf['host']) ? "[{$cf['host']}]" : $cf['host']; $start = "/usr/bin/killall -9 softflowd"; From 2bac4c4d75f86d876908e519d489595241feb1dc Mon Sep 17 00:00:00 2001 From: doktornotor Date: Fri, 17 Feb 2017 10:51:38 +0100 Subject: [PATCH 11/12] Rename so that is_service_enabled() works properly --- .../pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc index ec1bb4d09ef3..9440ce36c378 100644 --- a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc +++ b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc @@ -34,7 +34,7 @@ function sync_package_softflowd() { $cf = array(); } $interface_list = explode(",", $cf['interface']); - if (!empty($cf['host']) && !empty($interface_list) && $cf['enable_softflowd'] != "off") { + if (!empty($cf['host']) && !empty($interface_list) && $cf['enable'] != "off") { conf_mount_rw(); $cf['host'] = is_ipaddrv6($cf['host']) ? "[{$cf['host']}]" : $cf['host']; $start = "/usr/bin/killall -9 softflowd"; From 5a00e2d886eca437dfd61e97eeb12d1d861fa39a Mon Sep 17 00:00:00 2001 From: doktornotor Date: Wed, 22 Feb 2017 11:57:40 +0100 Subject: [PATCH 12/12] Move conf_mount_rw() call --- .../pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc index 9440ce36c378..d58661c1ae53 100644 --- a/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc +++ b/net-mgmt/pfSense-pkg-softflowd/files/usr/local/pkg/softflowd.inc @@ -33,9 +33,9 @@ function sync_package_softflowd() { } else { $cf = array(); } + conf_mount_rw(); $interface_list = explode(",", $cf['interface']); if (!empty($cf['host']) && !empty($interface_list) && $cf['enable'] != "off") { - conf_mount_rw(); $cf['host'] = is_ipaddrv6($cf['host']) ? "[{$cf['host']}]" : $cf['host']; $start = "/usr/bin/killall -9 softflowd"; foreach ($interface_list as $interface_friendly) { @@ -100,7 +100,6 @@ function sync_package_softflowd() { } } } else { - conf_mount_rw(); stop_service("softflowd"); unlink_if_exists("/usr/local/etc/rc.d/softflowd.sh"); }