1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-01 17:51:22 +03:00

networkd: fix serialization of {Incoming,Outgoing}Interface

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.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2017-11-27 11:51:08 +00:00
parent 7379f3de7f
commit 9491f55f74
2 changed files with 25 additions and 4 deletions

View File

@ -905,6 +905,20 @@ int routing_policy_serialize_rules(Set *rules, FILE *f) {
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);
@ -1001,14 +1015,14 @@ int routing_policy_load_rules(const char *state_file, Set **rules) {
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();
}

View File

@ -89,5 +89,12 @@ int main(int argc, char **argv) {
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;
}