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
This commit is contained in:
Pau Espin 2020-04-15 15:21:58 +02:00
parent c43e887e9e
commit 2a1cedd2dc
4 changed files with 19 additions and 15 deletions

View File

@ -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>

View File

@ -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);

View File

@ -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) {

View File

@ -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);