]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
Merge remote-tracking branch 'origin/next-4.1'
authorPatrick McHardy <kaber@trash.net>
Sat, 13 Jun 2015 12:48:56 +0000 (14:48 +0200)
committerPatrick McHardy <kaber@trash.net>
Sat, 13 Jun 2015 12:48:56 +0000 (14:48 +0200)
1  2 
src/datatype.c
src/netlink_delinearize.c

diff --cc src/datatype.c
Simple merge
index 2865e8ede71fd180e173d82900cea6d1c36b2b19,08fd5808418cded386cf45b7fa42db55cb2d5d7d..9ee43ba4d8df19bbebbf76b7b571b913e55bdac4
@@@ -1002,10 -1076,27 +1089,27 @@@ static void expr_postprocess(struct rul
                break;
        case EXPR_SET:
                list_for_each_entry(i, &expr->expressions, list)
 -                      expr_postprocess(ctx, stmt, &i);
 +                      expr_postprocess(ctx, &i);
                break;
+       case EXPR_CONCAT: {
+               unsigned int type = expr->dtype->type, ntype = 0;
+               int off = expr->dtype->subtypes;
+               const struct datatype *dtype;
+               list_for_each_entry(i, &expr->expressions, list) {
+                       if (type) {
+                               dtype = concat_subtype_lookup(type, --off);
+                               expr_set_type(i, dtype, dtype->byteorder);
+                       }
+                       expr_postprocess(ctx, stmt, &i);
+                       ntype = concat_subtype_add(ntype, i->dtype->type);
+               }
+               expr->dtype = concat_type_alloc(ntype);
+               break;
+       }
        case EXPR_UNARY:
 -              expr_postprocess(ctx, stmt, &expr->arg);
 +              expr_postprocess(ctx, &expr->arg);
                expr_set_type(expr->arg, expr->arg->dtype, !expr->arg->byteorder);
  
                *exprp = expr_get(expr->arg);