xref: /freebsd/contrib/wireguard-tools/set.c (revision adf376485712c8fffbf3be330d505a969647f479)
1*adf37648SKyle Evans // SPDX-License-Identifier: GPL-2.0 OR MIT
2*adf37648SKyle Evans /*
3*adf37648SKyle Evans  * Copyright (C) 2015-2020 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
4*adf37648SKyle Evans  */
5*adf37648SKyle Evans 
6*adf37648SKyle Evans #include <stdio.h>
7*adf37648SKyle Evans #include <stdlib.h>
8*adf37648SKyle Evans #include <string.h>
9*adf37648SKyle Evans 
10*adf37648SKyle Evans #include "containers.h"
11*adf37648SKyle Evans #include "config.h"
12*adf37648SKyle Evans #include "ipc.h"
13*adf37648SKyle Evans #include "subcommands.h"
14*adf37648SKyle Evans 
set_main(int argc,const char * argv[])15*adf37648SKyle Evans int set_main(int argc, const char *argv[])
16*adf37648SKyle Evans {
17*adf37648SKyle Evans 	struct wgdevice *device = NULL;
18*adf37648SKyle Evans 	int ret = 1;
19*adf37648SKyle Evans 
20*adf37648SKyle Evans 	if (argc < 3) {
21*adf37648SKyle Evans 		fprintf(stderr, "Usage: %s %s <interface> [listen-port <port>] [fwmark <mark>] [private-key <file path>] [peer <base64 public key> [remove] [preshared-key <file path>] [endpoint <ip>:<port>] [persistent-keepalive <interval seconds>] [allowed-ips <ip1>/<cidr1>[,<ip2>/<cidr2>]...] ]...\n", PROG_NAME, argv[0]);
22*adf37648SKyle Evans 		return 1;
23*adf37648SKyle Evans 	}
24*adf37648SKyle Evans 
25*adf37648SKyle Evans 	device = config_read_cmd(argv + 2, argc - 2);
26*adf37648SKyle Evans 	if (!device)
27*adf37648SKyle Evans 		goto cleanup;
28*adf37648SKyle Evans 	strncpy(device->name, argv[1], IFNAMSIZ -  1);
29*adf37648SKyle Evans 	device->name[IFNAMSIZ - 1] = '\0';
30*adf37648SKyle Evans 
31*adf37648SKyle Evans 	if (ipc_set_device(device) != 0) {
32*adf37648SKyle Evans 		perror("Unable to modify interface");
33*adf37648SKyle Evans 		goto cleanup;
34*adf37648SKyle Evans 	}
35*adf37648SKyle Evans 
36*adf37648SKyle Evans 	ret = 0;
37*adf37648SKyle Evans 
38*adf37648SKyle Evans cleanup:
39*adf37648SKyle Evans 	free_wgdevice(device);
40*adf37648SKyle Evans 	return ret;
41*adf37648SKyle Evans }
42