Re: [systemd-devel] [PATCH] networkd: do not change kernel forwarding parameters when IPForwarding is unset

2015-05-15 Thread Lennart Poettering
On Sat, 02.05.15 00:44, Zbigniew Jędrzejewski-Szmek (zbys...@in.waw.pl) wrote:

Just a heads up: I have now merged Benedikt's patches that removes
altering the global ip_forward sysctl from networkd. This means you
have probably should rebase your patch if it is still relevant.

Lennart

-- 
Lennart Poettering, Red Hat
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Re: [systemd-devel] [PATCH] networkd: do not change kernel forwarding parameters when IPForwarding is unset

2015-05-01 Thread Zbigniew Jędrzejewski-Szmek
On Fri, May 01, 2015 at 02:05:11PM -0700, Nick Owens wrote:
 From: Nick Owens misch...@offblast.org
 
 ---
  man/systemd.network.xml|  6 +++---
  src/network/networkd-link.c| 24 
  src/network/networkd-network.c |  2 ++
  src/network/networkd.h |  1 +
  4 files changed, 18 insertions(+), 15 deletions(-)
 
 the following patch should address 
 https://bugs.freedesktop.org/show_bug.cgi?id=89509
 let me know if there is a problem with it.
 
 sorry for the dup email tom et al., i had tried to send this email before 
 subscribing to the list.

Based on the discussion on the bug tracker, Lennart is OK with this
change. I think it makes sense too.

Please add some commit message though, explaining the rationale for the change
and the link 'https://bugs.freedesktop.org/show_bug.cgi?id=89509'.

 
 diff --git a/man/systemd.network.xml b/man/systemd.network.xml
 index 4be9d13..c5958e3 100644
 --- a/man/systemd.network.xml
 +++ b/man/systemd.network.xml
 @@ -356,7 +356,7 @@
listitemparaConfigures IP forwarding for the network
interface. If enabled incoming packets on the network
interface will be forwarded to other interfaces according to
 -  the routing table. Takes either a boolean argument, or the
 +  the routing table. The argument can be unset, a boolean, or the
Generally we don't specify that settings can be left unset. There are no
obligatory settings at all afaik. So there's no need to change this part.

values literalipv4/literal or literalipv6/literal,
which only enables IP forwarding for the specified address
family. This controls the
 @@ -365,8 +365,8 @@
filenamenet.ipv6.conf.lt;interfacegt;.forwarding/filename
sysctl options of the network interface (see ulink

 url=https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt;ip-sysctl.txt/ulink
 -  for details about sysctl options). Defaults to
 -  literalno/literal./para
 +  for details about sysctl options). By default, if unset, the IP
 +  forwarding parameters of the interface will not be changed.
And you can simplify this last sentence: If unset, IP forwarding
parameters of the interface will not be changed.

  
paraNote: unless this option is turned on, no IP
forwarding is done on this interface, even if this is
 diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
 index 0f9a1cd..6e7bade 100644
 --- a/src/network/networkd-link.c
 +++ b/src/network/networkd-link.c
 @@ -1488,16 +1488,14 @@ static int link_set_ipv4_forward(Link *link) {
  bool b;
  int r;
  
 -b = link_ipv4_forward_enabled(link);
 -
 -p = strjoina(/proc/sys/net/ipv4/conf/, link-ifname, 
 /forwarding);
 -r = write_string_file_no_create(p, one_zero(b));
 -if (r  0)
 -log_link_warning_errno(link, r, Cannot configure IPv4 
 forwarding for interface %s: %m, link-ifname);
 -
 -if (b) {
 +if (link-network-ip_forward != ADDRESS_FAMILY_UNSET) {
  _cleanup_free_ char *buf = NULL;
  
 +p = strjoina(/proc/sys/net/ipv4/conf/, link-ifname, 
 /forwarding);
 +r = write_string_file_no_create(p, 
 one_zero(link_ipv4_forward_enabled));
 +if (r  0)
 +log_link_warning_errno(link, r, Cannot configure 
 IPv4 forwarding for interface %s: %m, link-ifname);
 +
  /* If IP forwarding is turned on for this interface,
   * then propagate this to the global setting. Given
   * that turning this on has side-effects on other
 @@ -1525,10 +1523,12 @@ static int link_set_ipv6_forward(Link *link) {
  const char *p = NULL;
  int r;
  
 -p = strjoina(/proc/sys/net/ipv6/conf/, link-ifname, 
 /forwarding);
 -r = write_string_file_no_create(p, 
 one_zero(link_ipv6_forward_enabled(link)));
 -if (r  0)
 -log_link_warning_errno(link, r, Cannot configure IPv6 
 forwarding for interface: %m);
 +if (link-network-ip_forwarding != ADDRESS_FAMILY_UNSET) {
 +p = strjoina(/proc/sys/net/ipv6/conf/, link-ifname, 
 /forwarding);
 +r = write_string_file_no_create(p, 
 one_zero(link_ipv6_forward_enabled(link)));
 +if (r  0)
 +log_link_warning_errno(link, r, Cannot configure 
 IPv6 forwarding for interface: %m);
 +}
  
  return 0;
  }
 diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
 index 4d4972e..db36332 100644
 --- a/src/network/networkd-network.c
 +++ b/src/network/networkd-network.c
 @@ -109,6 +109,8 @@ static int network_load_one(Manager *manager, const char 
 *filename) {
  
  network-link_local = ADDRESS_FAMILY_IPV6;
  
 +network-ip_forward = ADDRESS_FAMILY_UNSET;
I think it would 

[systemd-devel] [PATCH] networkd: do not change kernel forwarding parameters when IPForwarding is unset

2015-05-01 Thread Nick Owens
From: Nick Owens misch...@offblast.org

---
 man/systemd.network.xml|  6 +++---
 src/network/networkd-link.c| 24 
 src/network/networkd-network.c |  2 ++
 src/network/networkd.h |  1 +
 4 files changed, 18 insertions(+), 15 deletions(-)

the following patch should address 
https://bugs.freedesktop.org/show_bug.cgi?id=89509
let me know if there is a problem with it.

sorry for the dup email tom et al., i had tried to send this email before 
subscribing to the list.

diff --git a/man/systemd.network.xml b/man/systemd.network.xml
index 4be9d13..c5958e3 100644
--- a/man/systemd.network.xml
+++ b/man/systemd.network.xml
@@ -356,7 +356,7 @@
   listitemparaConfigures IP forwarding for the network
   interface. If enabled incoming packets on the network
   interface will be forwarded to other interfaces according to
-  the routing table. Takes either a boolean argument, or the
+  the routing table. The argument can be unset, a boolean, or the
   values literalipv4/literal or literalipv6/literal,
   which only enables IP forwarding for the specified address
   family. This controls the
@@ -365,8 +365,8 @@
   filenamenet.ipv6.conf.lt;interfacegt;.forwarding/filename
   sysctl options of the network interface (see ulink
   
url=https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt;ip-sysctl.txt/ulink
-  for details about sysctl options). Defaults to
-  literalno/literal./para
+  for details about sysctl options). By default, if unset, the IP
+  forwarding parameters of the interface will not be changed.
 
   paraNote: unless this option is turned on, no IP
   forwarding is done on this interface, even if this is
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 0f9a1cd..6e7bade 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -1488,16 +1488,14 @@ static int link_set_ipv4_forward(Link *link) {
 bool b;
 int r;
 
-b = link_ipv4_forward_enabled(link);
-
-p = strjoina(/proc/sys/net/ipv4/conf/, link-ifname, /forwarding);
-r = write_string_file_no_create(p, one_zero(b));
-if (r  0)
-log_link_warning_errno(link, r, Cannot configure IPv4 
forwarding for interface %s: %m, link-ifname);
-
-if (b) {
+if (link-network-ip_forward != ADDRESS_FAMILY_UNSET) {
 _cleanup_free_ char *buf = NULL;
 
+p = strjoina(/proc/sys/net/ipv4/conf/, link-ifname, 
/forwarding);
+r = write_string_file_no_create(p, 
one_zero(link_ipv4_forward_enabled));
+if (r  0)
+log_link_warning_errno(link, r, Cannot configure IPv4 
forwarding for interface %s: %m, link-ifname);
+
 /* If IP forwarding is turned on for this interface,
  * then propagate this to the global setting. Given
  * that turning this on has side-effects on other
@@ -1525,10 +1523,12 @@ static int link_set_ipv6_forward(Link *link) {
 const char *p = NULL;
 int r;
 
-p = strjoina(/proc/sys/net/ipv6/conf/, link-ifname, /forwarding);
-r = write_string_file_no_create(p, 
one_zero(link_ipv6_forward_enabled(link)));
-if (r  0)
-log_link_warning_errno(link, r, Cannot configure IPv6 
forwarding for interface: %m);
+if (link-network-ip_forwarding != ADDRESS_FAMILY_UNSET) {
+p = strjoina(/proc/sys/net/ipv6/conf/, link-ifname, 
/forwarding);
+r = write_string_file_no_create(p, 
one_zero(link_ipv6_forward_enabled(link)));
+if (r  0)
+log_link_warning_errno(link, r, Cannot configure IPv6 
forwarding for interface: %m);
+}
 
 return 0;
 }
diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
index 4d4972e..db36332 100644
--- a/src/network/networkd-network.c
+++ b/src/network/networkd-network.c
@@ -109,6 +109,8 @@ static int network_load_one(Manager *manager, const char 
*filename) {
 
 network-link_local = ADDRESS_FAMILY_IPV6;
 
+network-ip_forward = ADDRESS_FAMILY_UNSET;
+
 r = config_parse(NULL, filename, file,
  Match\0
  Link\0
diff --git a/src/network/networkd.h b/src/network/networkd.h
index 4b13d4a..f4aefc1 100644
--- a/src/network/networkd.h
+++ b/src/network/networkd.h
@@ -60,6 +60,7 @@ typedef enum AddressFamilyBoolean {
 ADDRESS_FAMILY_IPV4 = 1,
 ADDRESS_FAMILY_IPV6 = 2,
 ADDRESS_FAMILY_YES = 3,
+ADDRESS_FAMILY_UNSET = 4,
 _ADDRESS_FAMILY_BOOLEAN_MAX,
 _ADDRESS_FAMILY_BOOLEAN_INVALID = -1,
 } AddressFamilyBoolean;
-- 
2.3.6

___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org

Re: [systemd-devel] [PATCH] networkd: do not change kernel forwarding parameters when IPForwarding is unset

2015-05-01 Thread systemd github import bot
Patchset imported to github.
Pull request:
https://github.com/systemd-devs/systemd/compare/master...systemd-mailing-devs:1430514311-3787-1-git-send-email-nick.owens%40coreos.com

--
Generated by https://github.com/haraldh/mail2git
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel