Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F148847168
D54561.1788989592.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D54561.1788989592.diff
View Options
diff --git a/sys/netinet6/in6.h b/sys/netinet6/in6.h
--- a/sys/netinet6/in6.h
+++ b/sys/netinet6/in6.h
@@ -671,6 +671,8 @@
uint32_t off_l4, uint32_t len, uint32_t cov);
int in6_cksum_pseudo(struct ip6_hdr *, uint32_t, uint8_t, uint16_t);
+time_t in6_expire_time(uint32_t);
+
int in6_localaddr(struct in6_addr *);
int in6_localip(struct in6_addr *);
bool in6_localip_fib(struct in6_addr *, uint16_t);
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -1029,6 +1029,15 @@
return (ia);
}
+time_t
+in6_expire_time(uint32_t ltime)
+{
+ if (ltime == ND6_INFINITE_LIFETIME)
+ return (0);
+ else
+ return (time_uptime + ltime);
+}
+
/*
* Update/configure interface address parameters:
*
@@ -1051,16 +1060,10 @@
* these members for applications.
*/
ia->ia6_lifetime = ifra->ifra_lifetime;
- if (ia->ia6_lifetime.ia6t_vltime != ND6_INFINITE_LIFETIME) {
- ia->ia6_lifetime.ia6t_expire =
- time_uptime + ia->ia6_lifetime.ia6t_vltime;
- } else
- ia->ia6_lifetime.ia6t_expire = 0;
- if (ia->ia6_lifetime.ia6t_pltime != ND6_INFINITE_LIFETIME) {
- ia->ia6_lifetime.ia6t_preferred =
- time_uptime + ia->ia6_lifetime.ia6t_pltime;
- } else
- ia->ia6_lifetime.ia6t_preferred = 0;
+ ia->ia6_lifetime.ia6t_expire =
+ in6_expire_time(ifra->ifra_lifetime.ia6t_vltime);
+ ia->ia6_lifetime.ia6t_preferred =
+ in6_expire_time(ifra->ifra_lifetime.ia6t_pltime);
/*
* backward compatibility - if IN6_IFF_DEPRECATED is set from the
diff --git a/sys/netinet6/nd6_rtr.c b/sys/netinet6/nd6_rtr.c
--- a/sys/netinet6/nd6_rtr.c
+++ b/sys/netinet6/nd6_rtr.c
@@ -1146,39 +1146,18 @@
return (n);
}
-static int
+static void
in6_init_prefix_ltimes(struct nd_prefix *ndpr)
{
- if (ndpr->ndpr_pltime == ND6_INFINITE_LIFETIME)
- ndpr->ndpr_preferred = 0;
- else
- ndpr->ndpr_preferred = time_uptime + ndpr->ndpr_pltime;
- if (ndpr->ndpr_vltime == ND6_INFINITE_LIFETIME)
- ndpr->ndpr_expire = 0;
- else
- ndpr->ndpr_expire = time_uptime + ndpr->ndpr_vltime;
-
- return 0;
+ ndpr->ndpr_preferred = in6_expire_time(ndpr->ndpr_pltime);
+ ndpr->ndpr_expire = in6_expire_time(ndpr->ndpr_vltime);
}
static void
in6_init_address_ltimes(struct nd_prefix *new, struct in6_addrlifetime *lt6)
{
- /* init ia6t_expire */
- if (lt6->ia6t_vltime == ND6_INFINITE_LIFETIME)
- lt6->ia6t_expire = 0;
- else {
- lt6->ia6t_expire = time_uptime;
- lt6->ia6t_expire += lt6->ia6t_vltime;
- }
-
- /* init ia6t_preferred */
- if (lt6->ia6t_pltime == ND6_INFINITE_LIFETIME)
- lt6->ia6t_preferred = 0;
- else {
- lt6->ia6t_preferred = time_uptime;
- lt6->ia6t_preferred += lt6->ia6t_pltime;
- }
+ lt6->ia6t_preferred = in6_expire_time(lt6->ia6t_pltime);
+ lt6->ia6t_expire = in6_expire_time(lt6->ia6t_vltime);
}
static struct in6_ifaddr *
@@ -1394,11 +1373,8 @@
new->ndpr_vltime = pr->ndpr_vltime;
new->ndpr_pltime = pr->ndpr_pltime;
new->ndpr_flags = pr->ndpr_flags;
- if ((error = in6_init_prefix_ltimes(new)) != 0) {
- free(new, M_IP6NDP);
- return (error);
- }
new->ndpr_lastupdate = time_uptime;
+ in6_init_prefix_ltimes(new);
/* initialization */
LIST_INIT(&new->ndpr_advrtrs);
@@ -1542,7 +1518,7 @@
if (new->ndpr_raf_onlink) {
pr->ndpr_vltime = new->ndpr_vltime;
pr->ndpr_pltime = new->ndpr_pltime;
- (void)in6_init_prefix_ltimes(pr); /* XXX error case? */
+ in6_init_prefix_ltimes(pr);
pr->ndpr_lastupdate = time_uptime;
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Sep 9, 9:33 PM (3 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29529242
Default Alt Text
D54561.1788989592.diff (3 KB)
Attached To
Mode
D54561: in6: Add a helper function to compute expiry times
Attached
Detach File
Event Timeline
Log In to Comment