]> git.proxmox.com Git - mirror_iproute2.git/blobdiff - tc/q_dsmark.c
man: tc-taprio.8: fix syntax error
[mirror_iproute2.git] / tc / q_dsmark.c
index cdb5bf2f3399e17d4b4e8d5e7063ba1269112887..d3e8292d777cc2be5385cde5a13bdeb5c966aabc 100644 (file)
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * q_dsmark.c          Differentiated Services field marking.
  *
@@ -8,7 +9,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <syslog.h>
 #include <fcntl.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include "tc_util.h"
 
 
-#define usage() return(-1)
-
-
 static void explain(void)
 {
-       fprintf(stderr,"Usage: dsmark indices INDICES [ default_index "
-           "DEFAULT_INDEX ] [ set_tc_index ]\n");
+       fprintf(stderr,"Usage: dsmark indices INDICES [ default_index DEFAULT_INDEX ] [ set_tc_index ]\n");
 }
 
 
 static int dsmark_parse_opt(struct qdisc_util *qu, int argc, char **argv,
-    struct nlmsghdr *n)
+       struct nlmsghdr *n, const char *dev)
 {
        struct rtattr *tail;
        __u16 ind;
        char *end;
-       int dflt,set_tc_index;
+       int dflt, set_tc_index;
 
        ind = set_tc_index = 0;
        dflt = -1;
        while (argc > 0) {
-               if (!strcmp(*argv,"indices")) {
+               if (!strcmp(*argv, "indices")) {
                        NEXT_ARG();
-                       ind = strtoul(*argv,&end,0);
+                       ind = strtoul(*argv, &end, 0);
                        if (*end) {
                                explain();
                                return -1;
                        }
-               }
-               else if (!strcmp(*argv,"default_index") || !strcmp(*argv,
+               } else if (!strcmp(*argv,"default_index") || !strcmp(*argv,
                    "default")) {
                        NEXT_ARG();
-                       dflt = strtoul(*argv,&end,0);
+                       dflt = strtoul(*argv, &end, 0);
                        if (*end) {
                                explain();
                                return -1;
                        }
-               }
-               else if (!strcmp(*argv,"set_tc_index")) {
+               } else if (!strcmp(*argv,"set_tc_index")) {
                        set_tc_index = 1;
-               }
-               else {
+               } else {
                        explain();
                        return -1;
                }
@@ -71,16 +64,16 @@ static int dsmark_parse_opt(struct qdisc_util *qu, int argc, char **argv,
                explain();
                return -1;
        }
-       tail = NLMSG_TAIL(n);
-       addattr_l(n,1024,TCA_OPTIONS,NULL,0);
-       addattr_l(n,1024,TCA_DSMARK_INDICES,&ind,sizeof(ind));
+       tail = addattr_nest(n, 1024, TCA_OPTIONS);
+       addattr_l(n, 1024, TCA_DSMARK_INDICES, &ind, sizeof(ind));
        if (dflt != -1) {
            __u16 tmp = dflt;
 
-           addattr_l(n,1024,TCA_DSMARK_DEFAULT_INDEX,&tmp,sizeof(tmp));
+           addattr_l(n, 1024, TCA_DSMARK_DEFAULT_INDEX, &tmp, sizeof(tmp));
        }
-       if (set_tc_index) addattr_l(n,1024,TCA_DSMARK_SET_TC_INDEX,NULL,0);
-       tail->rta_len = (void *) NLMSG_TAIL(n) - (void *) tail;
+       if (set_tc_index)
+               addattr_l(n, 1024, TCA_DSMARK_SET_TC_INDEX, NULL, 0);
+       addattr_nest_end(n, tail);
        return 0;
 }
 
@@ -92,41 +85,38 @@ static void explain_class(void)
 
 
 static int dsmark_parse_class_opt(struct qdisc_util *qu, int argc, char **argv,
-   struct nlmsghdr *n)
+       struct nlmsghdr *n, const char *dev)
 {
        struct rtattr *tail;
        __u8 tmp;
        char *end;
 
-       tail = NLMSG_TAIL(n);
-       addattr_l(n,1024,TCA_OPTIONS,NULL,0);
+       tail = addattr_nest(n, 1024, TCA_OPTIONS);
        while (argc > 0) {
-               if (!strcmp(*argv,"mask")) {
+               if (!strcmp(*argv, "mask")) {
                        NEXT_ARG();
-                       tmp = strtoul(*argv,&end,0);
+                       tmp = strtoul(*argv, &end, 0);
                        if (*end) {
                                explain_class();
                                return -1;
                        }
-                       addattr_l(n,1024,TCA_DSMARK_MASK,&tmp,1);
-               }
-               else if (!strcmp(*argv,"value")) {
+                       addattr_l(n, 1024, TCA_DSMARK_MASK, &tmp, 1);
+               } else if (!strcmp(*argv,"value")) {
                        NEXT_ARG();
-                       tmp = strtoul(*argv,&end,0);
+                       tmp = strtoul(*argv, &end, 0);
                        if (*end) {
                                explain_class();
                                return -1;
                        }
-                       addattr_l(n,1024,TCA_DSMARK_VALUE,&tmp,1);
-               }
-               else {
+                       addattr_l(n, 1024, TCA_DSMARK_VALUE, &tmp, 1);
+               } else {
                        explain_class();
                        return -1;
                }
                argc--;
                argv++;
        }
-       tail->rta_len = (void *) NLMSG_TAIL(n) - (void *) tail;
+       addattr_nest_end(n, tail);
        return 0;
 }
 
@@ -137,33 +127,32 @@ static int dsmark_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
        struct rtattr *tb[TCA_DSMARK_MAX+1];
 
        if (!opt) return 0;
-       memset(tb, 0, sizeof(tb));
        parse_rtattr(tb, TCA_DSMARK_MAX, RTA_DATA(opt), RTA_PAYLOAD(opt));
        if (tb[TCA_DSMARK_MASK]) {
                if (!RTA_PAYLOAD(tb[TCA_DSMARK_MASK]))
-                       fprintf(stderr,"dsmark: empty mask\n");
-               else fprintf(f,"mask 0x%02x ",
-                           *(__u8 *) RTA_DATA(tb[TCA_DSMARK_MASK]));
+                       fprintf(stderr, "dsmark: empty mask\n");
+               else fprintf(f, "mask 0x%02x ",
+                           rta_getattr_u8(tb[TCA_DSMARK_MASK]));
        }
        if (tb[TCA_DSMARK_VALUE]) {
                if (!RTA_PAYLOAD(tb[TCA_DSMARK_VALUE]))
-                       fprintf(stderr,"dsmark: empty value\n");
-               else fprintf(f,"value 0x%02x ",
-                           *(__u8 *) RTA_DATA(tb[TCA_DSMARK_VALUE]));
+                       fprintf(stderr, "dsmark: empty value\n");
+               else fprintf(f, "value 0x%02x ",
+                           rta_getattr_u8(tb[TCA_DSMARK_VALUE]));
        }
        if (tb[TCA_DSMARK_INDICES]) {
                if (RTA_PAYLOAD(tb[TCA_DSMARK_INDICES]) < sizeof(__u16))
-                       fprintf(stderr,"dsmark: indices too short\n");
-               else fprintf(f,"indices 0x%04x ",
-                           *(__u16 *) RTA_DATA(tb[TCA_DSMARK_INDICES]));
+                       fprintf(stderr, "dsmark: indices too short\n");
+               else fprintf(f, "indices 0x%04x ",
+                           rta_getattr_u16(tb[TCA_DSMARK_INDICES]));
        }
        if (tb[TCA_DSMARK_DEFAULT_INDEX]) {
                if (RTA_PAYLOAD(tb[TCA_DSMARK_DEFAULT_INDEX]) < sizeof(__u16))
-                       fprintf(stderr,"dsmark: default_index too short\n");
-               else fprintf(f,"default_index 0x%04x ",
-                           *(__u16 *) RTA_DATA(tb[TCA_DSMARK_DEFAULT_INDEX]));
+                       fprintf(stderr, "dsmark: default_index too short\n");
+               else fprintf(f, "default_index 0x%04x ",
+                           rta_getattr_u16(tb[TCA_DSMARK_DEFAULT_INDEX]));
        }
-       if (tb[TCA_DSMARK_SET_TC_INDEX]) fprintf(f,"set_tc_index ");
+       if (tb[TCA_DSMARK_SET_TC_INDEX]) fprintf(f, "set_tc_index ");
        return 0;
 }