aboutsummaryrefslogtreecommitdiff
path: root/src/ip6_icmp.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2022-04-25 08:36:12 +0000
committerMarc-André Lureau <marcandre.lureau@gmail.com>2022-04-25 08:36:12 +0000
commit3b521f531f7b85d9d101b8d7dfa729c8f2d9208d (patch)
treeade86112b5f0bb1c6209ef720921904bcb933648 /src/ip6_icmp.c
parent888ddad6bde1dc6d7dbfc8daa7d015251b72e02c (diff)
parentf65862ff117447bc69b137d36237ef1ea8868121 (diff)
downloadslirp-3b521f531f7b85d9d101b8d7dfa729c8f2d9208d.zip
slirp-3b521f531f7b85d9d101b8d7dfa729c8f2d9208d.tar.gz
slirp-3b521f531f7b85d9d101b8d7dfa729c8f2d9208d.tar.bz2
Merge branch 'opaque-timer' into 'master'
Support for CFI See merge request slirp/libslirp!117
Diffstat (limited to 'src/ip6_icmp.c')
-rw-r--r--src/ip6_icmp.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/ip6_icmp.c b/src/ip6_icmp.c
index 738b40f..0d7ee69 100644
--- a/src/ip6_icmp.c
+++ b/src/ip6_icmp.c
@@ -10,25 +10,14 @@
#define NDP_Interval \
g_rand_int_range(slirp->grand, NDP_MinRtrAdvInterval, NDP_MaxRtrAdvInterval)
-static void ra_timer_handler(void *opaque)
-{
- Slirp *slirp = opaque;
-
- slirp->cb->timer_mod(slirp->ra_timer,
- slirp->cb->clock_get_ns(slirp->opaque) / SCALE_MS +
- NDP_Interval,
- slirp->opaque);
- ndp_send_ra(slirp);
-}
-
-void icmp6_init(Slirp *slirp)
+void icmp6_post_init(Slirp *slirp)
{
if (!slirp->in6_enabled) {
return;
}
slirp->ra_timer =
- slirp->cb->timer_new(ra_timer_handler, slirp, slirp->opaque);
+ slirp_timer_new(slirp, SLIRP_TIMER_RA, NULL);
slirp->cb->timer_mod(slirp->ra_timer,
slirp->cb->clock_get_ns(slirp->opaque) / SCALE_MS +
NDP_Interval,
@@ -140,7 +129,7 @@ void icmp6_send_error(struct mbuf *m, uint8_t type, uint8_t code)
/*
* Send NDP Router Advertisement
*/
-void ndp_send_ra(Slirp *slirp)
+static void ndp_send_ra(Slirp *slirp)
{
DEBUG_CALL("ndp_send_ra");
@@ -219,6 +208,15 @@ void ndp_send_ra(Slirp *slirp)
ip6_output(NULL, t, 0);
}
+void ra_timer_handler(Slirp *slirp, void *unused)
+{
+ slirp->cb->timer_mod(slirp->ra_timer,
+ slirp->cb->clock_get_ns(slirp->opaque) / SCALE_MS +
+ NDP_Interval,
+ slirp->opaque);
+ ndp_send_ra(slirp);
+}
+
/*
* Send NDP Neighbor Solitication
*/