]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
iproute2: GENL: merge GENL_REQUEST and GENL_INITIALIZER
authorJulian Anastasov <ja@ssi.bg>
Wed, 12 Sep 2012 06:15:19 +0000 (09:15 +0300)
committerStephen Hemminger <shemminger@vyatta.com>
Mon, 17 Sep 2012 22:46:45 +0000 (15:46 -0700)
Both macros are used together, so better to have
single define. Update all requests in ipl2tp.c to use the
new macro.

Signed-off-by: Julian Anastasov <ja@ssi.bg>
include/libgenl.h
ip/ipl2tp.c
lib/libgenl.c

index 0b11a892e21dce6556b42c8765309533b6d456c7..9db4bafd511bee29747e96b3d84c8ed7ea8a3815 100644 (file)
@@ -3,25 +3,22 @@
 
 #include "libnetlink.h"
 
-#define GENL_REQUEST(_req, _hdrsiz, _bufsiz)                           \
+#define GENL_REQUEST(_req, _bufsiz, _family, _hdrsiz, _ver, _cmd, _flags) \
 struct {                                                               \
        struct nlmsghdr         n;                                      \
        struct genlmsghdr       g;                                      \
        char                    buf[NLMSG_ALIGN(_hdrsiz) + (_bufsiz)];  \
-} _req
-
-#define GENL_INITIALIZER(_family, _hdrsiz, _ver, _cmd, _flags)         \
-       {                                                               \
-               .n = {                                                  \
-                       .nlmsg_type = (_family),                        \
-                       .nlmsg_flags = (_flags),                        \
-                       .nlmsg_len = NLMSG_LENGTH(GENL_HDRLEN + (_hdrsiz)), \
-               },                                                      \
-               .g = {                                                  \
-                       .cmd = (_cmd),                                  \
-                       .version = (_ver),                              \
-               },                                                      \
-       }
+} _req = {                                                             \
+       .n = {                                                          \
+               .nlmsg_type = (_family),                                \
+               .nlmsg_flags = (_flags),                                \
+               .nlmsg_len = NLMSG_LENGTH(GENL_HDRLEN + (_hdrsiz)),     \
+       },                                                              \
+       .g = {                                                          \
+               .cmd = (_cmd),                                          \
+               .version = (_ver),                                      \
+       },                                                              \
+}
 
 extern int genl_resolve_family(struct rtnl_handle *grth, const char *family);
 
index aaa3d3157b27e50af6bbbd9da847b36203dd4b99..f6e264a843d095ad80fbe33d5f1f8fe8a092d0a1 100644 (file)
@@ -96,9 +96,8 @@ static int create_tunnel(struct l2tp_parm *p)
        uint32_t local_attr = L2TP_ATTR_IP_SADDR;
        uint32_t peer_attr = L2TP_ATTR_IP_DADDR;
 
-       GENL_REQUEST(req, 0, 1024)
-               = GENL_INITIALIZER(genl_family, NLM_F_REQUEST | NLM_F_ACK, 0,
-                                  L2TP_CMD_TUNNEL_CREATE, L2TP_GENL_VERSION);
+       GENL_REQUEST(req, 1024, genl_family, 0, L2TP_GENL_VERSION,
+                    L2TP_CMD_TUNNEL_CREATE, NLM_F_REQUEST | NLM_F_ACK);
 
        addattr32(&req.n, 1024, L2TP_ATTR_CONN_ID, p->tunnel_id);
        addattr32(&req.n, 1024, L2TP_ATTR_PEER_CONN_ID, p->peer_tunnel_id);
@@ -126,9 +125,8 @@ static int create_tunnel(struct l2tp_parm *p)
 
 static int delete_tunnel(struct l2tp_parm *p)
 {
-       GENL_REQUEST(req, 0, 1024)
-               = GENL_INITIALIZER(genl_family, NLM_F_REQUEST | NLM_F_ACK, 0,
-                                  L2TP_CMD_TUNNEL_DELETE, L2TP_GENL_VERSION);
+       GENL_REQUEST(req, 128, genl_family, 0, L2TP_GENL_VERSION,
+                    L2TP_CMD_TUNNEL_DELETE, NLM_F_REQUEST | NLM_F_ACK);
 
        addattr32(&req.n, 128, L2TP_ATTR_CONN_ID, p->tunnel_id);
 
@@ -140,18 +138,8 @@ static int delete_tunnel(struct l2tp_parm *p)
 
 static int create_session(struct l2tp_parm *p)
 {
-       struct {
-               struct nlmsghdr         n;
-               struct genlmsghdr       g;
-               char                    buf[1024];
-       } req;
-
-       memset(&req, 0, sizeof(req));
-       req.n.nlmsg_type = genl_family;
-       req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
-       req.n.nlmsg_len = NLMSG_LENGTH(GENL_HDRLEN);
-       req.g.cmd = L2TP_CMD_SESSION_CREATE;
-       req.g.version = L2TP_GENL_VERSION;
+       GENL_REQUEST(req, 1024, genl_family, 0, L2TP_GENL_VERSION,
+                    L2TP_CMD_SESSION_CREATE, NLM_F_REQUEST | NLM_F_ACK);
 
        addattr32(&req.n, 1024, L2TP_ATTR_CONN_ID, p->tunnel_id);
        addattr32(&req.n, 1024, L2TP_ATTR_PEER_CONN_ID, p->peer_tunnel_id);
@@ -182,18 +170,8 @@ static int create_session(struct l2tp_parm *p)
 
 static int delete_session(struct l2tp_parm *p)
 {
-       struct {
-               struct nlmsghdr         n;
-               struct genlmsghdr       g;
-               char                    buf[128];
-       } req;
-
-       memset(&req, 0, sizeof(req));
-       req.n.nlmsg_type = genl_family;
-       req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
-       req.n.nlmsg_len = NLMSG_LENGTH(GENL_HDRLEN);
-       req.g.cmd = L2TP_CMD_SESSION_DELETE;
-       req.g.version = L2TP_GENL_VERSION;
+       GENL_REQUEST(req, 1024, genl_family, 0, L2TP_GENL_VERSION,
+                    L2TP_CMD_SESSION_DELETE, NLM_F_REQUEST | NLM_F_ACK);
 
        addattr32(&req.n, 1024, L2TP_ATTR_CONN_ID, p->tunnel_id);
        addattr32(&req.n, 1024, L2TP_ATTR_SESSION_ID, p->session_id);
@@ -380,20 +358,11 @@ static int session_nlmsg(const struct sockaddr_nl *who, struct nlmsghdr *n, void
 
 static int get_session(struct l2tp_data *p)
 {
-       struct {
-               struct nlmsghdr         n;
-               struct genlmsghdr       g;
-               char buf[128];
-       } req;
-
-       memset(&req, 0, sizeof(req));
-       req.n.nlmsg_len = NLMSG_LENGTH(GENL_HDRLEN);
-       req.n.nlmsg_type = genl_family;
-       req.n.nlmsg_flags = NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST;
-       req.n.nlmsg_seq = genl_rth.dump = ++genl_rth.seq;
+       GENL_REQUEST(req, 128, genl_family, 0, L2TP_GENL_VERSION,
+                    L2TP_CMD_SESSION_GET,
+                    NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST);
 
-       req.g.cmd = L2TP_CMD_SESSION_GET;
-       req.g.version = L2TP_GENL_VERSION;
+       req.n.nlmsg_seq = genl_rth.dump = ++genl_rth.seq;
 
        if (p->config.tunnel_id && p->config.session_id) {
                addattr32(&req.n, 128, L2TP_ATTR_CONN_ID, p->config.tunnel_id);
@@ -423,20 +392,11 @@ static int tunnel_nlmsg(const struct sockaddr_nl *who, struct nlmsghdr *n, void
 
 static int get_tunnel(struct l2tp_data *p)
 {
-       struct {
-               struct nlmsghdr         n;
-               struct genlmsghdr       g;
-               char buf[1024];
-       } req;
-
-       memset(&req, 0, sizeof(req));
-       req.n.nlmsg_len = NLMSG_LENGTH(GENL_HDRLEN);
-       req.n.nlmsg_type = genl_family;
-       req.n.nlmsg_flags = NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST;
-       req.n.nlmsg_seq = genl_rth.dump = ++genl_rth.seq;
+       GENL_REQUEST(req, 1024, genl_family, 0, L2TP_GENL_VERSION,
+                    L2TP_CMD_TUNNEL_GET,
+                    NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST);
 
-       req.g.cmd = L2TP_CMD_TUNNEL_GET;
-       req.g.version = L2TP_GENL_VERSION;
+       req.n.nlmsg_seq = genl_rth.dump = ++genl_rth.seq;
 
        if (p->config.tunnel_id)
                addattr32(&req.n, 1024, L2TP_ATTR_CONN_ID, p->config.tunnel_id);
index d68e58e4b54cfb774c91f92f83cf9c5cf2a9e3d6..ef3e5db60c8cbcec82b808f6e91b384ee66771ed 100644 (file)
@@ -47,11 +47,10 @@ static int genl_parse_getfamily(struct nlmsghdr *nlh)
 
 int genl_resolve_family(struct rtnl_handle *grth, const char *family)
 {
-       GENL_REQUEST(req, 0, 1024)
-               = GENL_INITIALIZER(GENL_ID_CTRL, 0,
-                                  0, CTRL_CMD_GETFAMILY, NLM_F_REQUEST);
+       GENL_REQUEST(req, 1024, GENL_ID_CTRL, 0, 0, CTRL_CMD_GETFAMILY,
+                    NLM_F_REQUEST);
 
-       addattr_l(&req.n, 1024, CTRL_ATTR_FAMILY_NAME,
+       addattr_l(&req.n, sizeof(req), CTRL_ATTR_FAMILY_NAME,
                  family, strlen(family) + 1);
 
        if (rtnl_talk(grth, &req.n, 0, 0, &req.n) < 0) {