Update mud

Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
This commit is contained in:
Adrien Gallouët
2018-02-24 16:03:44 +00:00
parent 7eecb435b9
commit e21c83602f
4 changed files with 20 additions and 27 deletions

2
mud

Submodule mud updated: 1aded8ec29...81b279b060

View File

@@ -284,12 +284,8 @@ gt_bind(int argc, char **argv)
switch (req.type) { switch (req.type) {
case CTL_NONE: case CTL_NONE:
break; break;
case CTL_PATH_ADD: case CTL_STATE:
if (mud_add_path(mud, (struct sockaddr *)&req.path_addr)) if (mud_set_state(mud, (struct sockaddr *)&req.path.addr, req.path.state))
res.ret = errno;
break;
case CTL_PATH_DEL:
if (mud_del_path(mud, (struct sockaddr *)&req.path_addr))
res.ret = errno; res.ret = errno;
break; break;
case CTL_MTU: case CTL_MTU:

View File

@@ -1,11 +1,12 @@
#pragma once #pragma once
#include "../mud/mud.h"
#include <sys/socket.h> #include <sys/socket.h>
enum ctl_type { enum ctl_type {
CTL_NONE = 0, CTL_NONE = 0,
CTL_PATH_ADD, CTL_STATE,
CTL_PATH_DEL,
CTL_STATUS, CTL_STATUS,
CTL_MTU, CTL_MTU,
CTL_TIMEOUT, CTL_TIMEOUT,
@@ -16,7 +17,10 @@ struct ctl_msg {
enum ctl_type type; enum ctl_type type;
int reply, ret; int reply, ret;
union { union {
struct sockaddr_storage path_addr; struct {
struct sockaddr_storage addr;
enum mud_state state;
} path;
struct { struct {
size_t mtu; size_t mtu;
int mtu_auto; int mtu_auto;

View File

@@ -11,32 +11,25 @@ int
gt_path(int argc, char **argv) gt_path(int argc, char **argv)
{ {
const char *dev = "tun0"; const char *dev = "tun0";
struct sockaddr_storage addr = { 0 };
struct ctl_msg req = {
.type = CTL_STATE,
.path = {.state = MUD_UP},
}, res = {0};
struct argz pathz[] = { struct argz pathz[] = {
{NULL, "IPADDR", &addr, argz_addr}, {NULL, "IPADDR", &req.path.addr, argz_addr},
{"dev", "NAME", &dev, argz_str}, {"dev", "NAME", &dev, argz_str},
{"up|down", NULL, NULL, argz_option}, {"up|backup|down", NULL, NULL, argz_option},
{NULL}}; {NULL}};
if (argz(pathz, argc, argv)) if (argz(pathz, argc, argv))
return 1; return 1;
struct ctl_msg req, res = {0}; if (argz_is_set(pathz, "backup")) {
req.path.state = MUD_BACKUP;
if (argz_is_set(pathz, "up")) {
req = (struct ctl_msg){
.type = CTL_PATH_ADD,
.path_addr = addr,
};
} else if (argz_is_set(pathz, "down")) { } else if (argz_is_set(pathz, "down")) {
req = (struct ctl_msg){ req.path.state = MUD_DOWN;
.type = CTL_PATH_DEL,
.path_addr = addr,
};
} else {
gt_log("nothing to do..\n");
return 0;
} }
int fd = ctl_create("/run/" PACKAGE_NAME, NULL); int fd = ctl_create("/run/" PACKAGE_NAME, NULL);