<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ggsn/+/17824">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Rename netdev_*route to end in route4<br><br>Functions for IPv6 will be added soon afterwards. Also take the chance<br>to check for address length in sgsnemu and only apply the route if the<br>address matches.<br><br>Change-Id: Ic6c1b3c11c56f047e6e8c6f1040257fd62afea0f<br>---<br>M lib/netdev.c<br>M lib/netdev.h<br>M lib/tun.c<br>M sgsnemu/sgsnemu.c<br>4 files changed, 19 insertions(+), 15 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/24/17824/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/lib/netdev.c b/lib/netdev.c</span><br><span>index 19c5c62..4d171c9 100644</span><br><span>--- a/lib/netdev.c</span><br><span>+++ b/lib/netdev.c</span><br><span>@@ -176,7 +176,7 @@</span><br><span>  /* On linux the route to the interface is set automatically</span><br><span>     on FreeBSD we have to do this manually */</span><br><span> #if defined(__FreeBSD__) || defined (__APPLE__)</span><br><span style="color: hsl(0, 100%, 40%);">- netdev_addroute(dstaddr, addr, &this->netmask);</span><br><span style="color: hsl(120, 100%, 40%);">+        netdev_addroute4(dstaddr, addr, &this->netmask);</span><br><span> #endif</span><br><span> </span><br><span>        return 0;</span><br><span>@@ -553,7 +553,7 @@</span><br><span>      return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete)</span><br><span style="color: hsl(120, 100%, 40%);">+static int netdev_route4(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete)</span><br><span> {</span><br><span>     int fd;</span><br><span> #if defined(__linux__)</span><br><span>@@ -643,14 +643,14 @@</span><br><span>    return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask)</span><br><span style="color: hsl(120, 100%, 40%);">+int netdev_addroute4(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        return netdev_route(dst, gateway, mask, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+   return netdev_route4(dst, gateway, mask, 0);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask)</span><br><span style="color: hsl(120, 100%, 40%);">+int netdev_delroute4(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-     return netdev_route(dst, gateway, mask, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+   return netdev_route4(dst, gateway, mask, 1);</span><br><span> }</span><br><span> </span><br><span> #include <ifaddrs.h></span><br><span>diff --git a/lib/netdev.h b/lib/netdev.h</span><br><span>index 74c42da..5dab27f 100644</span><br><span>--- a/lib/netdev.h</span><br><span>+++ b/lib/netdev.h</span><br><span>@@ -65,8 +65,8 @@</span><br><span> extern int netdev_addaddr6(const char *devname, struct in6_addr *addr,</span><br><span>                          struct in6_addr *dstaddr, int prefixlen);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-extern int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask);</span><br><span style="color: hsl(0, 100%, 40%);">-extern int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask);</span><br><span style="color: hsl(120, 100%, 40%);">+extern int netdev_addroute4(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask);</span><br><span style="color: hsl(120, 100%, 40%);">+extern int netdev_delroute4(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask);</span><br><span> </span><br><span> extern int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list,</span><br><span>                               size_t prefix_size, int flags);</span><br><span>diff --git a/lib/tun.c b/lib/tun.c</span><br><span>index 1aeed55..c771b92 100644</span><br><span>--- a/lib/tun.c</span><br><span>+++ b/lib/tun.c</span><br><span>@@ -276,7 +276,7 @@</span><br><span> {</span><br><span> </span><br><span>      if (tun->routes) {</span><br><span style="color: hsl(0, 100%, 40%);">-           netdev_delroute(&tun->dstaddr.v4, &tun->addr.v4, &tun->netmask);</span><br><span style="color: hsl(120, 100%, 40%);">+         netdev_delroute4(&tun->dstaddr.v4, &tun->addr.v4, &tun->netmask);</span><br><span>       }</span><br><span> </span><br><span>        if (tun->fd >= 0) {</span><br><span>diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c</span><br><span>index 6b05ac5..c28df52 100644</span><br><span>--- a/sgsnemu/sgsnemu.c</span><br><span>+++ b/sgsnemu/sgsnemu.c</span><br><span>@@ -1516,9 +1516,11 @@</span><br><span>                  /* printf("Setting up interface and routing\n"); */</span><br><span>                        tun_addaddr(tun, &addr[i], NULL, prefixlen);</span><br><span>                     if (options.defaultroute) {</span><br><span style="color: hsl(0, 100%, 40%);">-                             struct in_addr rm;</span><br><span style="color: hsl(0, 100%, 40%);">-                              rm.s_addr = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-                          netdev_addroute(&rm, &addr[i].v4, &rm);</span><br><span style="color: hsl(120, 100%, 40%);">+                           if (in46a_is_v4(&addr[i])) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                      struct in_addr rm;</span><br><span style="color: hsl(120, 100%, 40%);">+                                    rm.s_addr = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                                        netdev_addroute4(&rm, &addr[i].v4, &rm);</span><br><span style="color: hsl(120, 100%, 40%);">+                          }</span><br><span>                    }</span><br><span>                    if (options.ipup)</span><br><span>                            tun_runscript(tun, options.ipup);</span><br><span>@@ -1718,9 +1720,11 @@</span><br><span>   if ((options.createif) && (options.netaddr.len)) {</span><br><span>           tun_addaddr(tun, &options.netaddr, NULL, options.prefixlen);</span><br><span>             if (options.defaultroute) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     struct in_addr rm;</span><br><span style="color: hsl(0, 100%, 40%);">-                      rm.s_addr = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-                  netdev_addroute(&rm, &options.netaddr.v4, &rm);</span><br><span style="color: hsl(120, 100%, 40%);">+                   if (in46a_is_v4(&options.netaddr)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                              struct in_addr rm;</span><br><span style="color: hsl(120, 100%, 40%);">+                            rm.s_addr = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                                netdev_addroute4(&rm, &options.netaddr.v4, &rm);</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span>            }</span><br><span>            if (options.ipup)</span><br><span>                    tun_runscript(tun, options.ipup);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ggsn/+/17824">change 17824</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ggsn/+/17824"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ggsn </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ic6c1b3c11c56f047e6e8c6f1040257fd62afea0f </div>
<div style="display:none"> Gerrit-Change-Number: 17824 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>