Можно ли добавить настраиваемый параметр, в котором можно было бы задавать метрику для маршрутов, по которым доступны Delegate Prefixes? Суть проблемы: у нас RADIUS отдает атрибуты Framed-IPv6-Prefix и Delegated-IPv6-Prefix с одинаковым содержимым. Как результат на БРАСе имеем такую картину:
Code: Select all
6031: ipoe3064.1000@ipoe3064: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1480 qdisc noqueue state UP group default qlen 1000
link/ether 00:1b:21:bc:ef:46 brd ff:ff:ff:ff:ff:ff
inet 100.64.0.1 peer 100.64.4.68/32 scope global ipoe3064.1000
valid_lft forever preferred_lft forever
inet6 2a0e:XXXX:1:1249:21b:21ff:febc:ef46/64 scope global nodad
valid_lft forever preferred_lft forever
inet6 fe80::21b:21ff:febc:ef46/64 scope link
valid_lft forever preferred_lft forever
Code: Select all
2a0e:XXXX:1:1249::/64 dev ipoe3064.1000 proto kernel metric 256 pref medium
2a0e:XXXX:1:1249::/64 via fe80::3ef8:8ff:fe9a:69d9 dev ipoe3064.1000 metric 1024 pref medium
fe80::/64 dev ipoe3064 proto kernel metric 256 pref medium
fe80::/64 dev ipoe3064.1000 proto kernel metric 256 pref medium
После такого патча:
Code: Select all
diff --git a/accel-pppd/ipv6/dhcpv6.c b/accel-pppd/ipv6/dhcpv6.c
index fc6487b..908b3bf 100644
--- a/accel-pppd/ipv6/dhcpv6.c
+++ b/accel-pppd/ipv6/dhcpv6.c
@@ -178,7 +178,7 @@ static void insert_dp_routes(struct ap_session *ses, struct dhcpv6_pd *pd, struc
addr = NULL;
list_for_each_entry(p, &ses->ipv6_dp->prefix_list, entry) {
- if (ip6route_add(ses->ifindex, &p->addr, p->prefix_len, addr, 0, 0)) {
+ if (ip6route_add(ses->ifindex, &p->addr, p->prefix_len, addr, 0, 128)) {
err = errno;
inet_ntop(AF_INET6, &p->addr, str1, sizeof(str1));
if (addr)
И еще, а это правильно, когда для не-ppp интерфейса происходит вызов скрипта /etc/ppp/ip-up, прописанного в секции [pppd-compat] ?