aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/main.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2017-09-25 04:22:09 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2017-10-02 02:45:53 +0200
commitf129bdab552d21ae3cd77412342b94b5f23587b2 (patch)
tree4cb9ebc3ed181a9fd463ac00dbca0274c647a79c /src/main.c
parenttools: uapi: only make sure socket file is socket (diff)
downloadwireguard-monolithic-historical-f129bdab552d21ae3cd77412342b94b5f23587b2.tar.xz
wireguard-monolithic-historical-f129bdab552d21ae3cd77412342b94b5f23587b2.zip
netlink: switch from ioctl to netlink for configuration
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index 5034d7b..7776d00 100644
--- a/src/main.c
+++ b/src/main.c
@@ -5,13 +5,16 @@
#include "noise.h"
#include "queueing.h"
#include "ratelimiter.h"
+#include "netlink.h"
#include "crypto/chacha20poly1305.h"
#include "crypto/blake2s.h"
#include "crypto/curve25519.h"
+#include "uapi/wireguard.h"
#include <linux/version.h>
#include <linux/init.h>
#include <linux/module.h>
+#include <linux/genetlink.h>
#include <net/rtnetlink.h>
static int __init mod_init(void)
@@ -35,11 +38,17 @@ static int __init mod_init(void)
if (ret < 0)
goto err_device;
+ ret = netlink_init();
+ if (ret < 0)
+ goto err_netlink;
+
pr_info("WireGuard " WIREGUARD_VERSION " loaded. See www.wireguard.com for information.\n");
pr_info("Copyright (C) 2015-2017 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.\n");
return 0;
+err_netlink:
+ device_uninit();
err_device:
crypt_ctx_cache_uninit();
err_packet:
@@ -48,6 +57,7 @@ err_packet:
static void __exit mod_exit(void)
{
+ netlink_uninit();
device_uninit();
crypt_ctx_cache_uninit();
pr_debug("WireGuard unloaded\n");
@@ -60,3 +70,4 @@ MODULE_DESCRIPTION("Fast, secure, and modern VPN tunnel");
MODULE_AUTHOR("Jason A. Donenfeld <Jason@zx2c4.com>");
MODULE_VERSION(WIREGUARD_VERSION);
MODULE_ALIAS_RTNL_LINK(KBUILD_MODNAME);
+MODULE_ALIAS_GENL_FAMILY(WG_GENL_NAME);