projects
/
project
/
odhcpd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
config: make RA mtu configurable via UCI
[project/odhcpd.git]
/
src
/
router.c
diff --git
a/src/router.c
b/src/router.c
index
6e5111a
..
a31bf4e
100644
(file)
--- a/
src/router.c
+++ b/
src/router.c
@@
-259,9
+259,12
@@
static uint16_t calc_ra_lifetime(struct interface *iface, uint32_t maxival)
static uint64_t send_router_advert(struct interface *iface, const struct in6_addr *from)
{
time_t now = odhcpd_time();
static uint64_t send_router_advert(struct interface *iface, const struct in6_addr *from)
{
time_t now = odhcpd_time();
-
int mtu = odhcpd_get_interface_config(iface->ifname, "mtu")
;
+
uint32_t mtu = iface->ra_mtu
;
int hlim = odhcpd_get_interface_config(iface->ifname, "hop_limit");
int hlim = odhcpd_get_interface_config(iface->ifname, "hop_limit");
+ if (mtu == 0)
+ mtu = odhcpd_get_interface_config(iface->ifname, "mtu");
+
if (mtu < 1280)
mtu = 1280;
if (mtu < 1280)
mtu = 1280;
@@
-319,7
+322,7
@@
static uint64_t send_router_advert(struct interface *iface, const struct in6_add
struct in6_addr dns_pref, *dns_addr = &dns_pref;
size_t dns_cnt = 1;
struct in6_addr dns_pref, *dns_addr = &dns_pref;
size_t dns_cnt = 1;
- odhcpd_get_
linklocal_interface_address(iface->ifindex
, &dns_pref);
+ odhcpd_get_
interface_dns_addr(iface
, &dns_pref);
for (ssize_t i = 0; i < ipcnt; ++i) {
struct odhcpd_ipaddr *addr = &addrs[i];
for (ssize_t i = 0; i < ipcnt; ++i) {
struct odhcpd_ipaddr *addr = &addrs[i];
@@
-617,7
+620,7
@@
static void forward_router_advertisement(uint8_t *data, size_t len)
size_t rewrite_cnt = iface->dns_cnt;
if (rewrite_cnt == 0) {
size_t rewrite_cnt = iface->dns_cnt;
if (rewrite_cnt == 0) {
- if (odhcpd_get_
linklocal_interface_address(iface->ifindex
, &addr))
+ if (odhcpd_get_
interface_dns_addr(iface
, &addr))
continue; // Unable to comply
rewrite = &addr;
continue; // Unable to comply
rewrite = &addr;