Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
D
Dnsmasq
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
Dnsmasq
Commits
a18bf314
Commit
a18bf314
authored
Feb 12, 2016
by
S L
Committed by
Simon Kelley
Feb 12, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Avoid losing timer when deleting a RA context.
parent
1566bacb
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
5 deletions
+14
-5
src/radv.c
src/radv.c
+14
-5
No files found.
src/radv.c
View file @
a18bf314
...
@@ -28,11 +28,12 @@
...
@@ -28,11 +28,12 @@
struct
ra_param
{
struct
ra_param
{
time_t
now
;
time_t
now
;
int
ind
,
managed
,
other
,
f
ound_context
,
f
irst
,
adv_router
;
int
ind
,
managed
,
other
,
first
,
adv_router
;
char
*
if_name
;
char
*
if_name
;
struct
dhcp_netid
*
tags
;
struct
dhcp_netid
*
tags
;
struct
in6_addr
link_local
,
link_global
,
ula
;
struct
in6_addr
link_local
,
link_global
,
ula
;
unsigned
int
glob_pref_time
,
link_pref_time
,
ula_pref_time
,
adv_interval
,
prio
;
unsigned
int
glob_pref_time
,
link_pref_time
,
ula_pref_time
,
adv_interval
,
prio
;
struct
dhcp_context
*
found_context
;
};
};
struct
search_param
{
struct
search_param
{
...
@@ -251,7 +252,7 @@ static void send_ra_alias(time_t now, int iface, char *iface_name, struct in6_ad
...
@@ -251,7 +252,7 @@ static void send_ra_alias(time_t now, int iface, char *iface_name, struct in6_ad
parm
.
ind
=
iface
;
parm
.
ind
=
iface
;
parm
.
managed
=
0
;
parm
.
managed
=
0
;
parm
.
other
=
0
;
parm
.
other
=
0
;
parm
.
found_context
=
0
;
parm
.
found_context
=
NULL
;
parm
.
adv_router
=
0
;
parm
.
adv_router
=
0
;
parm
.
if_name
=
iface_name
;
parm
.
if_name
=
iface_name
;
parm
.
first
=
1
;
parm
.
first
=
1
;
...
@@ -310,6 +311,12 @@ static void send_ra_alias(time_t now, int iface, char *iface_name, struct in6_ad
...
@@ -310,6 +311,12 @@ static void send_ra_alias(time_t now, int iface, char *iface_name, struct in6_ad
if
(
old
>
context
->
saved_valid
)
if
(
old
>
context
->
saved_valid
)
{
{
/* We've advertised this enough, time to go */
/* We've advertised this enough, time to go */
/* If this context held the timeout, and there's another context in use
transfer the timeout there. */
if
(
context
->
ra_time
!=
0
&&
parm
.
found_context
&&
parm
.
found_context
->
ra_time
==
0
)
new_timeout
(
parm
.
found_context
,
iface_name
,
now
);
*
up
=
context
->
next
;
*
up
=
context
->
next
;
free
(
context
);
free
(
context
);
}
}
...
@@ -637,7 +644,9 @@ static int add_prefixes(struct in6_addr *local, int prefix,
...
@@ -637,7 +644,9 @@ static int add_prefixes(struct in6_addr *local, int prefix,
}
}
param
->
first
=
0
;
param
->
first
=
0
;
param
->
found_context
=
1
;
/* found_context is the _last_ one we found, so if there's
more than one, it's not the first. */
param
->
found_context
=
context
;
}
}
/* configured time is ceiling */
/* configured time is ceiling */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment