mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-05-04 20:06:43 +02:00
main/pingu: fix load-balance of ppp devices
They might not have a default gw address
This commit is contained in:
parent
57dc825956
commit
33077a2b7a
@ -0,0 +1,60 @@
|
||||
From f63ef90aefd8142c7b2ea2e3cd1abae375fc46b5 Mon Sep 17 00:00:00 2001
|
||||
From: Natanael Copa <ncopa@alpinelinux.org>
|
||||
Date: Wed, 1 Aug 2012 12:03:05 +0000
|
||||
Subject: [PATCH] pingu_route: allow default routes that has no via address
|
||||
|
||||
This fixes load-balancing with ppp0
|
||||
|
||||
We also make the via address family (ipv4/ipv6) agnostic.
|
||||
---
|
||||
pingu_netlink.c | 10 ++++++----
|
||||
pingu_route.c | 3 +--
|
||||
2 files changed, 7 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/pingu_netlink.c b/pingu_netlink.c
|
||||
index e3afbf6..dc4a2ed 100644
|
||||
--- a/pingu_netlink.c
|
||||
+++ b/pingu_netlink.c
|
||||
@@ -138,7 +138,7 @@ static int netlink_add_subrtattr_l(struct rtattr *rta, int maxlen, int type,
|
||||
subrta->rta_len = len;
|
||||
memcpy(RTA_DATA(subrta), data, alen);
|
||||
rta->rta_len = NLMSG_ALIGN(rta->rta_len) + RTA_ALIGN(len);
|
||||
- return TRUE;
|
||||
+ return alen;
|
||||
}
|
||||
|
||||
static int netlink_add_subrtattr_addr_any(struct rtattr *rta, int maxlen,
|
||||
@@ -346,11 +346,13 @@ static int add_one_nh(struct rtattr *rta, struct rtnexthop *rtnh,
|
||||
struct pingu_iface *iface,
|
||||
struct pingu_route *route)
|
||||
{
|
||||
+ int addr_size;
|
||||
if (route == NULL)
|
||||
return 0;
|
||||
- netlink_add_subrtattr_addr_any(rta, 1024, RTA_GATEWAY,
|
||||
- &route->gw_addr);
|
||||
- rtnh->rtnh_len += sizeof(struct rtattr) + 4; // TODO: support ipv6
|
||||
+ addr_size = netlink_add_subrtattr_addr_any(rta, 1024, RTA_GATEWAY,
|
||||
+ &route->gw_addr);
|
||||
+ if (addr_size > 0)
|
||||
+ rtnh->rtnh_len += sizeof(struct rtattr) + addr_size;
|
||||
if (iface->balance_weight)
|
||||
rtnh->rtnh_hops = iface->balance_weight - 1;
|
||||
rtnh->rtnh_ifindex = iface->index;
|
||||
diff --git a/pingu_route.c b/pingu_route.c
|
||||
index 3a82f70..a2462c1 100644
|
||||
--- a/pingu_route.c
|
||||
+++ b/pingu_route.c
|
||||
@@ -126,8 +126,7 @@ int is_default_gw(struct pingu_route *route)
|
||||
{
|
||||
switch (route->dest.sa.sa_family) {
|
||||
case AF_INET:
|
||||
- return ((route->dest.sin.sin_addr.s_addr == 0)
|
||||
- && (route->gw_addr.sin.sin_addr.s_addr != 0));
|
||||
+ return (route->dest.sin.sin_addr.s_addr == 0);
|
||||
break;
|
||||
case AF_INET6:
|
||||
log_debug("TODO: ipv6");
|
||||
--
|
||||
1.7.11.2
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
|
||||
pkgname=pingu
|
||||
pkgver=1.2
|
||||
pkgrel=0
|
||||
pkgrel=1
|
||||
pkgdesc="Small daemon that pings hosts and executes a script when status change"
|
||||
url="http://git.alpinelinux.org/cgit/pingu"
|
||||
arch="all"
|
||||
@ -11,6 +11,7 @@ makedepends="libev-dev lua-dev"
|
||||
depends=
|
||||
subpackages="$pkgname-doc lua-pingu:_lua mtu"
|
||||
source="http://git.alpinelinux.org/cgit/$pkgname/snapshot/$pkgname-$pkgver.tar.bz2
|
||||
0001-pingu_route-allow-default-routes-that-has-no-via-add.patch
|
||||
pingu.initd
|
||||
"
|
||||
|
||||
@ -41,4 +42,5 @@ _lua() {
|
||||
}
|
||||
|
||||
md5sums="a874d852ae0d8e10f8c22e0008d1b529 pingu-1.2.tar.bz2
|
||||
dbd6e66d4c9c694fd0436e91555bf750 0001-pingu_route-allow-default-routes-that-has-no-via-add.patch
|
||||
70f56b0f506e1c2e725d0ec062667c32 pingu.initd"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user