brintos

brintos / linux-shallow public Read only

0
0
Text · 1.6 KiB · a00671b Raw
79 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.4 */5 6#include "version.h"7#include "device.h"8#include "noise.h"9#include "queueing.h"10#include "ratelimiter.h"11#include "netlink.h"12 13#include <uapi/linux/wireguard.h>14 15#include <linux/init.h>16#include <linux/module.h>17#include <net/genetlink.h>18#include <net/rtnetlink.h>19 20static int __init wg_mod_init(void)21{22	int ret;23 24	ret = wg_allowedips_slab_init();25	if (ret < 0)26		goto err_allowedips;27 28#ifdef DEBUG29	ret = -ENOTRECOVERABLE;30	if (!wg_allowedips_selftest() || !wg_packet_counter_selftest() ||31	    !wg_ratelimiter_selftest())32		goto err_peer;33#endif34	wg_noise_init();35 36	ret = wg_peer_init();37	if (ret < 0)38		goto err_peer;39 40	ret = wg_device_init();41	if (ret < 0)42		goto err_device;43 44	ret = wg_genetlink_init();45	if (ret < 0)46		goto err_netlink;47 48	pr_info("WireGuard " WIREGUARD_VERSION " loaded. See www.wireguard.com for information.\n");49	pr_info("Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.\n");50 51	return 0;52 53err_netlink:54	wg_device_uninit();55err_device:56	wg_peer_uninit();57err_peer:58	wg_allowedips_slab_uninit();59err_allowedips:60	return ret;61}62 63static void __exit wg_mod_exit(void)64{65	wg_genetlink_uninit();66	wg_device_uninit();67	wg_peer_uninit();68	wg_allowedips_slab_uninit();69}70 71module_init(wg_mod_init);72module_exit(wg_mod_exit);73MODULE_LICENSE("GPL v2");74MODULE_DESCRIPTION("WireGuard secure network tunnel");75MODULE_AUTHOR("Jason A. Donenfeld <Jason@zx2c4.com>");76MODULE_VERSION(WIREGUARD_VERSION);77MODULE_ALIAS_RTNL_LINK(KBUILD_MODNAME);78MODULE_ALIAS_GENL_FAMILY(WG_GENL_NAME);79