aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2020-04-15 15:21:58 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2020-04-15 16:40:10 +0200
commit2a1cedd2dc844ad6cabcd6f08791f16e0f4febae (patch)
tree14966b64e68f26c0270a962619693686040cb2ec
parentc43e887e9ebef798760aeb2e0e9649d92d9d8551 (diff)
Rename netdev_*route to end in route4
Functions for IPv6 will be added soon afterwards. Also take the chance to check for address length in sgsnemu and only apply the route if the address matches. Change-Id: Ic6c1b3c11c56f047e6e8c6f1040257fd62afea0f
-rw-r--r--lib/netdev.c12
-rw-r--r--lib/netdev.h4
-rw-r--r--lib/tun.c2
-rw-r--r--sgsnemu/sgsnemu.c16
4 files changed, 19 insertions, 15 deletions
diff --git a/lib/netdev.c b/lib/netdev.c
index 19c5c62..4d171c9 100644
--- a/lib/netdev.c
+++ b/lib/netdev.c
@@ -176,7 +176,7 @@ int netdev_setaddr4(const char *devname, struct in_addr *addr,
/* On linux the route to the interface is set automatically
on FreeBSD we have to do this manually */
#if defined(__FreeBSD__) || defined (__APPLE__)
- netdev_addroute(dstaddr, addr, &this->netmask);
+ netdev_addroute4(dstaddr, addr, &this->netmask);
#endif
return 0;
@@ -553,7 +553,7 @@ int netdev_addaddr6(const char *devname, struct in6_addr *addr,
return 0;
}
-static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete)
+static int netdev_route4(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete)
{
int fd;
#if defined(__linux__)
@@ -643,14 +643,14 @@ static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_
return 0;
}
-int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask)
+int netdev_addroute4(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask)
{
- return netdev_route(dst, gateway, mask, 0);
+ return netdev_route4(dst, gateway, mask, 0);
}
-int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask)
+int netdev_delroute4(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask)
{
- return netdev_route(dst, gateway, mask, 1);
+ return netdev_route4(dst, gateway, mask, 1);
}
#include <ifaddrs.h>
diff --git a/lib/netdev.h b/lib/netdev.h
index 74c42da..5dab27f 100644
--- a/lib/netdev.h
+++ b/lib/netdev.h
@@ -65,8 +65,8 @@ extern int netdev_addaddr4(const char *devname, struct in_addr *addr,
extern int netdev_addaddr6(const char *devname, struct in6_addr *addr,
struct in6_addr *dstaddr, int prefixlen);
-extern int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask);
-extern int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask);
+extern int netdev_addroute4(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask);
+extern int netdev_delroute4(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask);
extern int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list,
size_t prefix_size, int flags);
diff --git a/lib/tun.c b/lib/tun.c
index 1aeed55..c771b92 100644
--- a/lib/tun.c
+++ b/lib/tun.c
@@ -276,7 +276,7 @@ int tun_free(struct tun_t *tun)
{
if (tun->routes) {
- netdev_delroute(&tun->dstaddr.v4, &tun->addr.v4, &tun->netmask);
+ netdev_delroute4(&tun->dstaddr.v4, &tun->addr.v4, &tun->netmask);
}
if (tun->fd >= 0) {
diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c
index 6b05ac5..c28df52 100644
--- a/sgsnemu/sgsnemu.c
+++ b/sgsnemu/sgsnemu.c
@@ -1516,9 +1516,11 @@ static int create_pdp_conf(struct pdp_t *pdp, void *cbp, int cause)
/* printf("Setting up interface and routing\n"); */
tun_addaddr(tun, &addr[i], NULL, prefixlen);
if (options.defaultroute) {
- struct in_addr rm;
- rm.s_addr = 0;
- netdev_addroute(&rm, &addr[i].v4, &rm);
+ if (in46a_is_v4(&addr[i])) {
+ struct in_addr rm;
+ rm.s_addr = 0;
+ netdev_addroute4(&rm, &addr[i].v4, &rm);
+ }
}
if (options.ipup)
tun_runscript(tun, options.ipup);
@@ -1718,9 +1720,11 @@ int main(int argc, char **argv)
if ((options.createif) && (options.netaddr.len)) {
tun_addaddr(tun, &options.netaddr, NULL, options.prefixlen);
if (options.defaultroute) {
- struct in_addr rm;
- rm.s_addr = 0;
- netdev_addroute(&rm, &options.netaddr.v4, &rm);
+ if (in46a_is_v4(&options.netaddr)) {
+ struct in_addr rm;
+ rm.s_addr = 0;
+ netdev_addroute4(&rm, &options.netaddr.v4, &rm);
+ }
}
if (options.ipup)
tun_runscript(tun, options.ipup);