X-Git-Url: http://git.onelab.eu/?p=util-vserver-pl.git;a=blobdiff_plain;f=src%2Fvip6-autod.c;h=ab03cf5777e40420bf8f09bd1e7ce01b533090d1;hp=feade59dee1b4f6c7d91905639d75b5504388e66;hb=HEAD;hpb=73929cd988b29cc673ff12945fc921957bd3ce78 diff --git a/src/vip6-autod.c b/src/vip6-autod.c index feade59..ab03cf5 100644 --- a/src/vip6-autod.c +++ b/src/vip6-autod.c @@ -29,6 +29,11 @@ #include #include +#if defined(HAVE_LIBNL_1_1) +# include +#elif defined(HAVE_LIBNL_1_0) +# define rtnl_addr_put rtnl_addr_free +#endif #include #include @@ -107,7 +112,7 @@ static int add_address_to_interface(int ifindex, struct in6_addr *address, if (rtnl_addr_add(handle, rta, NLM_F_REPLACE) != -1 || errno == EEXIST) err = 0; - rtnl_addr_free(rta); + rtnl_addr_put(rta); nl_addr_destroy(nl); return err; } @@ -139,7 +144,7 @@ static inline int remove_address_from_interface(struct nid_prefix_map *entry) ret = rtnl_addr_delete(handle, rta, 0); - rtnl_addr_free(rta); + rtnl_addr_put(rta); nl_addr_destroy(nl); return ret; @@ -595,11 +600,22 @@ int main(int argc, char *argv[]) openlog("vip6-autod", LOG_PERROR, LOG_DAEMON); +#if defined(HAVE_LIBNL_1_1) + cbs = nl_cb_alloc(NL_CB_VERBOSE); + if (!cbs) { + syslog(LOG_CRIT, "nl_cb_alloc: %s", strerror(errno)); + exit(1); + } +#elif defined(HAVE_LIBNL_1_0) handle = nl_handle_alloc_nondefault(NL_CB_VERBOSE); cbs = nl_handle_get_cb(handle); +#endif nl_cb_set(cbs, NL_CB_VALID, NL_CB_CUSTOM, handle_valid_msg, &map); nl_cb_set(cbs, NL_CB_SEQ_CHECK, NL_CB_CUSTOM, handle_no_op, NULL); nl_cb_err(cbs, NL_CB_CUSTOM, handle_error_msg, &map); +#ifdef HAVE_LIBNL_1_1 + handle = nl_handle_alloc_cb(cbs); +#endif nl_disable_sequence_check(handle); nl_join_groups(handle, RTMGRP_IPV6_PREFIX|RTMGRP_IPV6_IFADDR);