From 45a7db9d9e62a42789279ef0399b59282ea50d09 Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Sat, 30 Apr 2011 14:43:17 +0200 Subject: [PATCH] implemented cmds in fbctl --- src/xt_user.h | 3 +++ usr/fbctl.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/xt_user.h b/src/xt_user.h index cea64f8..855512c 100644 --- a/src/xt_user.h +++ b/src/xt_user.h @@ -32,6 +32,9 @@ enum userctl_groups { #define NETLINK_USERCTL_CMD_RM 3 #define NETLINK_USERCTL_CMD_BIND 4 #define NETLINK_USERCTL_CMD_UNBIND 5 +#define NETLINK_USERCTL_CMD_REPLACE 6 +#define NETLINK_USERCTL_CMD_SUBSCRIBE 7 +#define NETLINK_USERCTL_CMD_UNSUBSCRIBE 8 struct lananlmsg_add { char name[FBNAMSIZ]; diff --git a/usr/fbctl.c b/usr/fbctl.c index ad3fe03..a042b43 100644 --- a/usr/fbctl.c +++ b/usr/fbctl.c @@ -339,20 +339,51 @@ static void do_unbind(int argc, char **argv) static void do_replace(int argc, char **argv, int drop) { + struct lananlmsg lmsg; + struct lananlmsg_replace *msg; + if (argc != 2) usage(); + + memset(&lmsg, 0, sizeof(lmsg)); + lmsg.cmd = NETLINK_USERCTL_CMD_REPLACE; + msg = (struct lananlmsg_replace *) lmsg.buff; + msg->drop_priv = drop; + strlcpy(msg->name1, argv[0], sizeof(msg->name1)); + strlcpy(msg->name2, argv[1], sizeof(msg->name2)); + send_netlink(&lmsg); } static void do_subscribe(int argc, char **argv) { + struct lananlmsg lmsg; + struct lananlmsg_subscribe *msg; + if (argc != 2) usage(); + + memset(&lmsg, 0, sizeof(lmsg)); + lmsg.cmd = NETLINK_USERCTL_CMD_SUBSCRIBE; + msg = (struct lananlmsg_subscribe *) lmsg.buff; + strlcpy(msg->name1, argv[0], sizeof(msg->name1)); + strlcpy(msg->name2, argv[1], sizeof(msg->name2)); + send_netlink(&lmsg); } static void do_unsubscribe(int argc, char **argv) { + struct lananlmsg lmsg; + struct lananlmsg_unsubscribe *msg; + if (argc != 2) usage(); + + memset(&lmsg, 0, sizeof(lmsg)); + lmsg.cmd = NETLINK_USERCTL_CMD_UNSUBSCRIBE; + msg = (struct lananlmsg_unsubscribe *) lmsg.buff; + strlcpy(msg->name1, argv[0], sizeof(msg->name1)); + strlcpy(msg->name2, argv[1], sizeof(msg->name2)); + send_netlink(&lmsg); } int main(int argc, char **argv) -- 2.11.4.GIT