Let's just say that the code wasn't fully functional ;(
Since we only had the parser for serialization, and not the writer, we are
free to change the format. So while at it, let's use shorter names in the
serialization format that match the surrounding style.
space = true;
}
+ if (rule->iif) {
+ fprintf(f, "%siif=%s",
+ space ? " " : "",
+ rule->iif);
+ space = true;
+ }
+
+ if (rule->oif) {
+ fprintf(f, "%soif=%s",
+ space ? " " : "",
+ rule->oif);
+ space = true;
+ }
+
fprintf(f, "%stable=%"PRIu32 "\n",
space ? " " : "",
rule->table);
log_error_errno(r, "Failed to parse RPDB rule firewall mark or mask, ignoring: %s", a);
continue;
}
- } else if (streq(a, "IncomingInterface")) {
+ } else if (streq(a, "iif")) {
- rule->iif = strdup(a);
+ rule->iif = strdup(b);
if (!rule->iif)
return log_oom();
- } else if (streq(a, "OutgoingInterface")) {
+ } else if (streq(a, "oif")) {
- rule->oif = strdup(a);
+ rule->oif = strdup(b);
if (!rule->oif)
return log_oom();
}
test_rule_serialization("default table",
"RULE=from=1::2/64 to=2::3/64", p);
+ test_rule_serialization("incoming interface",
+ "RULE=from=1::2/64 to=2::3/64 table=1 iif=lo",
+ "RULE=from=1::2/64 to=2::3/64 iif=lo table=1");
+
+ test_rule_serialization("outgoing interface",
+ "RULE=from=1::2/64 to=2::3/64 oif=eth0 table=1", NULL);
+
return 0;
}