mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 03:12:22 +00:00
util: change name of virFirewallRule to virFirewallCmd
These objects aren't rules, they are commands that are executed that may create a firewall rule, delete a firewall rule, or simply list the existing firewall rules. It's confusing for the objects to be called "Rule" (especially in the case of the function virFirewallRemoveRule(), which doesn't remove a rule from the firewall, it takes one of the objects out of the list of commands to execute! In order to remove a rule from the host's firewall, you have to Add a "rule" (now "cmd" aka command) to the list that will, when applied/run, remove a rule from the host firewall.) Changing the name to virFirewallCmd makes it all much less confusing. Signed-off-by: Laine Stump <laine@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
5ac0dc4cef
commit
0817344ba7
@ -2404,17 +2404,17 @@ virFileCacheSetPriv;
|
|||||||
|
|
||||||
|
|
||||||
# util/virfirewall.h
|
# util/virfirewall.h
|
||||||
virFirewallAddRuleFull;
|
virFirewallAddCmdFull;
|
||||||
virFirewallApply;
|
virFirewallApply;
|
||||||
|
virFirewallCmdAddArg;
|
||||||
|
virFirewallCmdAddArgFormat;
|
||||||
|
virFirewallCmdAddArgList;
|
||||||
|
virFirewallCmdAddArgSet;
|
||||||
|
virFirewallCmdGetArgCount;
|
||||||
|
virFirewallCmdToString;
|
||||||
virFirewallFree;
|
virFirewallFree;
|
||||||
virFirewallNew;
|
virFirewallNew;
|
||||||
virFirewallRemoveRule;
|
virFirewallRemoveCmd;
|
||||||
virFirewallRuleAddArg;
|
|
||||||
virFirewallRuleAddArgFormat;
|
|
||||||
virFirewallRuleAddArgList;
|
|
||||||
virFirewallRuleAddArgSet;
|
|
||||||
virFirewallRuleGetArgCount;
|
|
||||||
virFirewallRuleToString;
|
|
||||||
virFirewallStartRollback;
|
virFirewallStartRollback;
|
||||||
virFirewallStartTransaction;
|
virFirewallStartTransaction;
|
||||||
|
|
||||||
|
@ -98,18 +98,18 @@ iptablesPrivateChainCreate(virFirewall *fw,
|
|||||||
for (i = 0; i < data->nchains; i++) {
|
for (i = 0; i < data->nchains; i++) {
|
||||||
const char *from;
|
const char *from;
|
||||||
if (!virHashLookup(chains, data->chains[i].child)) {
|
if (!virHashLookup(chains, data->chains[i].child)) {
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", data->table,
|
"--table", data->table,
|
||||||
"--new-chain", data->chains[i].child, NULL);
|
"--new-chain", data->chains[i].child, NULL);
|
||||||
*data->changed = true;
|
*data->changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
from = virHashLookup(links, data->chains[i].child);
|
from = virHashLookup(links, data->chains[i].child);
|
||||||
if (!from || STRNEQ(from, data->chains[i].parent))
|
if (!from || STRNEQ(from, data->chains[i].parent))
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", data->table,
|
"--table", data->table,
|
||||||
"--insert", data->chains[i].parent,
|
"--insert", data->chains[i].parent,
|
||||||
"--jump", data->chains[i].child, NULL);
|
"--jump", data->chains[i].child, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -151,10 +151,10 @@ iptablesSetupPrivateChains(virFirewallLayer layer)
|
|||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS(data); i++)
|
for (i = 0; i < G_N_ELEMENTS(data); i++)
|
||||||
virFirewallAddRuleFull(fw, data[i].layer,
|
virFirewallAddCmdFull(fw, data[i].layer,
|
||||||
false, iptablesPrivateChainCreate,
|
false, iptablesPrivateChainCreate,
|
||||||
&(data[i]), "--table", data[i].table,
|
&(data[i]), "--table", data[i].table,
|
||||||
"--list-rules", NULL);
|
"--list-rules", NULL);
|
||||||
|
|
||||||
if (virFirewallApply(fw) < 0)
|
if (virFirewallApply(fw) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
@ -173,15 +173,15 @@ iptablesInput(virFirewall *fw,
|
|||||||
{
|
{
|
||||||
g_autofree char *portstr = g_strdup_printf("%d", port);
|
g_autofree char *portstr = g_strdup_printf("%d", port);
|
||||||
|
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "filter",
|
"--table", "filter",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_INPUT_CHAIN,
|
VIR_IPTABLES_INPUT_CHAIN,
|
||||||
"--in-interface", iface,
|
"--in-interface", iface,
|
||||||
"--protocol", tcp ? "tcp" : "udp",
|
"--protocol", tcp ? "tcp" : "udp",
|
||||||
"--destination-port", portstr,
|
"--destination-port", portstr,
|
||||||
"--jump", "ACCEPT",
|
"--jump", "ACCEPT",
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -194,15 +194,15 @@ iptablesOutput(virFirewall *fw,
|
|||||||
{
|
{
|
||||||
g_autofree char *portstr = g_strdup_printf("%d", port);
|
g_autofree char *portstr = g_strdup_printf("%d", port);
|
||||||
|
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "filter",
|
"--table", "filter",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_OUTPUT_CHAIN,
|
VIR_IPTABLES_OUTPUT_CHAIN,
|
||||||
"--out-interface", iface,
|
"--out-interface", iface,
|
||||||
"--protocol", tcp ? "tcp" : "udp",
|
"--protocol", tcp ? "tcp" : "udp",
|
||||||
"--destination-port", portstr,
|
"--destination-port", portstr,
|
||||||
"--jump", "ACCEPT",
|
"--jump", "ACCEPT",
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -369,24 +369,24 @@ iptablesForwardAllowOut(virFirewall *fw,
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (physdev && physdev[0])
|
if (physdev && physdev[0])
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "filter",
|
"--table", "filter",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_FWD_OUT_CHAIN,
|
VIR_IPTABLES_FWD_OUT_CHAIN,
|
||||||
"--source", networkstr,
|
"--source", networkstr,
|
||||||
"--in-interface", iface,
|
"--in-interface", iface,
|
||||||
"--out-interface", physdev,
|
"--out-interface", physdev,
|
||||||
"--jump", "ACCEPT",
|
"--jump", "ACCEPT",
|
||||||
NULL);
|
NULL);
|
||||||
else
|
else
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "filter",
|
"--table", "filter",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_FWD_OUT_CHAIN,
|
VIR_IPTABLES_FWD_OUT_CHAIN,
|
||||||
"--source", networkstr,
|
"--source", networkstr,
|
||||||
"--in-interface", iface,
|
"--in-interface", iface,
|
||||||
"--jump", "ACCEPT",
|
"--jump", "ACCEPT",
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -459,28 +459,28 @@ iptablesForwardAllowRelatedIn(virFirewall *fw,
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (physdev && physdev[0])
|
if (physdev && physdev[0])
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "filter",
|
"--table", "filter",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_FWD_IN_CHAIN,
|
VIR_IPTABLES_FWD_IN_CHAIN,
|
||||||
"--destination", networkstr,
|
"--destination", networkstr,
|
||||||
"--in-interface", physdev,
|
"--in-interface", physdev,
|
||||||
"--out-interface", iface,
|
"--out-interface", iface,
|
||||||
"--match", "conntrack",
|
"--match", "conntrack",
|
||||||
"--ctstate", "ESTABLISHED,RELATED",
|
"--ctstate", "ESTABLISHED,RELATED",
|
||||||
"--jump", "ACCEPT",
|
"--jump", "ACCEPT",
|
||||||
NULL);
|
NULL);
|
||||||
else
|
else
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "filter",
|
"--table", "filter",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_FWD_IN_CHAIN,
|
VIR_IPTABLES_FWD_IN_CHAIN,
|
||||||
"--destination", networkstr,
|
"--destination", networkstr,
|
||||||
"--out-interface", iface,
|
"--out-interface", iface,
|
||||||
"--match", "conntrack",
|
"--match", "conntrack",
|
||||||
"--ctstate", "ESTABLISHED,RELATED",
|
"--ctstate", "ESTABLISHED,RELATED",
|
||||||
"--jump", "ACCEPT",
|
"--jump", "ACCEPT",
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -551,24 +551,24 @@ iptablesForwardAllowIn(virFirewall *fw,
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (physdev && physdev[0])
|
if (physdev && physdev[0])
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "filter",
|
"--table", "filter",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_FWD_IN_CHAIN,
|
VIR_IPTABLES_FWD_IN_CHAIN,
|
||||||
"--destination", networkstr,
|
"--destination", networkstr,
|
||||||
"--in-interface", physdev,
|
"--in-interface", physdev,
|
||||||
"--out-interface", iface,
|
"--out-interface", iface,
|
||||||
"--jump", "ACCEPT",
|
"--jump", "ACCEPT",
|
||||||
NULL);
|
NULL);
|
||||||
else
|
else
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "filter",
|
"--table", "filter",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_FWD_IN_CHAIN,
|
VIR_IPTABLES_FWD_IN_CHAIN,
|
||||||
"--destination", networkstr,
|
"--destination", networkstr,
|
||||||
"--out-interface", iface,
|
"--out-interface", iface,
|
||||||
"--jump", "ACCEPT",
|
"--jump", "ACCEPT",
|
||||||
NULL);
|
NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -626,14 +626,14 @@ iptablesForwardAllowCross(virFirewall *fw,
|
|||||||
const char *iface,
|
const char *iface,
|
||||||
int action)
|
int action)
|
||||||
{
|
{
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "filter",
|
"--table", "filter",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_FWD_X_CHAIN,
|
VIR_IPTABLES_FWD_X_CHAIN,
|
||||||
"--in-interface", iface,
|
"--in-interface", iface,
|
||||||
"--out-interface", iface,
|
"--out-interface", iface,
|
||||||
"--jump", "ACCEPT",
|
"--jump", "ACCEPT",
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -680,13 +680,13 @@ iptablesForwardRejectOut(virFirewall *fw,
|
|||||||
const char *iface,
|
const char *iface,
|
||||||
int action)
|
int action)
|
||||||
{
|
{
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "filter",
|
"--table", "filter",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_FWD_OUT_CHAIN,
|
VIR_IPTABLES_FWD_OUT_CHAIN,
|
||||||
"--in-interface", iface,
|
"--in-interface", iface,
|
||||||
"--jump", "REJECT",
|
"--jump", "REJECT",
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -732,13 +732,13 @@ iptablesForwardRejectIn(virFirewall *fw,
|
|||||||
const char *iface,
|
const char *iface,
|
||||||
int action)
|
int action)
|
||||||
{
|
{
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "filter",
|
"--table", "filter",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_FWD_IN_CHAIN,
|
VIR_IPTABLES_FWD_IN_CHAIN,
|
||||||
"--out-interface", iface,
|
"--out-interface", iface,
|
||||||
"--jump", "REJECT",
|
"--jump", "REJECT",
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -796,7 +796,7 @@ iptablesForwardMasquerade(virFirewall *fw,
|
|||||||
g_autofree char *addrEndStr = NULL;
|
g_autofree char *addrEndStr = NULL;
|
||||||
g_autofree char *portRangeStr = NULL;
|
g_autofree char *portRangeStr = NULL;
|
||||||
g_autofree char *natRangeStr = NULL;
|
g_autofree char *natRangeStr = NULL;
|
||||||
virFirewallRule *rule;
|
virFirewallCmd *fwCmd;
|
||||||
int af = VIR_SOCKET_ADDR_FAMILY(netaddr);
|
int af = VIR_SOCKET_ADDR_FAMILY(netaddr);
|
||||||
virFirewallLayer layer = af == AF_INET ?
|
virFirewallLayer layer = af == AF_INET ?
|
||||||
VIR_FIREWALL_LAYER_IPV4 : VIR_FIREWALL_LAYER_IPV6;
|
VIR_FIREWALL_LAYER_IPV4 : VIR_FIREWALL_LAYER_IPV6;
|
||||||
@ -814,7 +814,7 @@ iptablesForwardMasquerade(virFirewall *fw,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (protocol && protocol[0]) {
|
if (protocol && protocol[0]) {
|
||||||
rule = virFirewallAddRule(fw, layer,
|
fwCmd = virFirewallAddCmd(fw, layer,
|
||||||
"--table", "nat",
|
"--table", "nat",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_NAT_POSTROUTE_CHAIN,
|
VIR_IPTABLES_NAT_POSTROUTE_CHAIN,
|
||||||
@ -823,7 +823,7 @@ iptablesForwardMasquerade(virFirewall *fw,
|
|||||||
"!", "--destination", networkstr,
|
"!", "--destination", networkstr,
|
||||||
NULL);
|
NULL);
|
||||||
} else {
|
} else {
|
||||||
rule = virFirewallAddRule(fw, layer,
|
fwCmd = virFirewallAddCmd(fw, layer,
|
||||||
"--table", "nat",
|
"--table", "nat",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_NAT_POSTROUTE_CHAIN,
|
VIR_IPTABLES_NAT_POSTROUTE_CHAIN,
|
||||||
@ -833,7 +833,7 @@ iptablesForwardMasquerade(virFirewall *fw,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (physdev && physdev[0])
|
if (physdev && physdev[0])
|
||||||
virFirewallRuleAddArgList(fw, rule, "--out-interface", physdev, NULL);
|
virFirewallCmdAddArgList(fw, fwCmd, "--out-interface", physdev, NULL);
|
||||||
|
|
||||||
if (protocol && protocol[0]) {
|
if (protocol && protocol[0]) {
|
||||||
if (port->start == 0 && port->end == 0) {
|
if (port->start == 0 && port->end == 0) {
|
||||||
@ -861,16 +861,16 @@ iptablesForwardMasquerade(virFirewall *fw,
|
|||||||
portRangeStr ? portRangeStr : "");
|
portRangeStr ? portRangeStr : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
virFirewallRuleAddArgList(fw, rule,
|
virFirewallCmdAddArgList(fw, fwCmd,
|
||||||
"--jump", "SNAT",
|
"--jump", "SNAT",
|
||||||
"--to-source", natRangeStr, NULL);
|
"--to-source", natRangeStr, NULL);
|
||||||
} else {
|
} else {
|
||||||
virFirewallRuleAddArgList(fw, rule,
|
virFirewallCmdAddArgList(fw, fwCmd,
|
||||||
"--jump", "MASQUERADE", NULL);
|
"--jump", "MASQUERADE", NULL);
|
||||||
|
|
||||||
if (portRangeStr && portRangeStr[0])
|
if (portRangeStr && portRangeStr[0])
|
||||||
virFirewallRuleAddArgList(fw, rule,
|
virFirewallCmdAddArgList(fw, fwCmd,
|
||||||
"--to-ports", &portRangeStr[1], NULL);
|
"--to-ports", &portRangeStr[1], NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -950,24 +950,24 @@ iptablesForwardDontMasquerade(virFirewall *fw,
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (physdev && physdev[0])
|
if (physdev && physdev[0])
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "nat",
|
"--table", "nat",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_NAT_POSTROUTE_CHAIN,
|
VIR_IPTABLES_NAT_POSTROUTE_CHAIN,
|
||||||
"--out-interface", physdev,
|
"--out-interface", physdev,
|
||||||
"--source", networkstr,
|
"--source", networkstr,
|
||||||
"--destination", destaddr,
|
"--destination", destaddr,
|
||||||
"--jump", "RETURN",
|
"--jump", "RETURN",
|
||||||
NULL);
|
NULL);
|
||||||
else
|
else
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"--table", "nat",
|
"--table", "nat",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_NAT_POSTROUTE_CHAIN,
|
VIR_IPTABLES_NAT_POSTROUTE_CHAIN,
|
||||||
"--source", networkstr,
|
"--source", networkstr,
|
||||||
"--destination", destaddr,
|
"--destination", destaddr,
|
||||||
"--jump", "RETURN",
|
"--jump", "RETURN",
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1032,15 +1032,15 @@ iptablesOutputFixUdpChecksum(virFirewall *fw,
|
|||||||
{
|
{
|
||||||
g_autofree char *portstr = g_strdup_printf("%d", port);
|
g_autofree char *portstr = g_strdup_printf("%d", port);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"--table", "mangle",
|
"--table", "mangle",
|
||||||
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
action == VIR_NETFILTER_INSERT ? "--insert" : "--delete",
|
||||||
VIR_IPTABLES_NAT_POSTROUTE_CHAIN,
|
VIR_IPTABLES_NAT_POSTROUTE_CHAIN,
|
||||||
"--out-interface", iface,
|
"--out-interface", iface,
|
||||||
"--protocol", "udp",
|
"--protocol", "udp",
|
||||||
"--destination-port", portstr,
|
"--destination-port", portstr,
|
||||||
"--jump", "CHECKSUM", "--checksum-fill",
|
"--jump", "CHECKSUM", "--checksum-fill",
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -81,17 +81,17 @@ ebtablesAddForwardPolicyReject(ebtablesContext *ctx)
|
|||||||
g_autoptr(virFirewall) fw = virFirewallNew();
|
g_autoptr(virFirewall) fw = virFirewallNew();
|
||||||
|
|
||||||
virFirewallStartTransaction(fw, VIR_FIREWALL_TRANSACTION_IGNORE_ERRORS);
|
virFirewallStartTransaction(fw, VIR_FIREWALL_TRANSACTION_IGNORE_ERRORS);
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_ETHERNET,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_ETHERNET,
|
||||||
"--new-chain", ctx->chain,
|
"--new-chain", ctx->chain,
|
||||||
NULL);
|
NULL);
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_ETHERNET,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_ETHERNET,
|
||||||
"--insert", "FORWARD",
|
"--insert", "FORWARD",
|
||||||
"--jump", ctx->chain, NULL);
|
"--jump", ctx->chain, NULL);
|
||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_ETHERNET,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_ETHERNET,
|
||||||
"-P", ctx->chain, "DROP",
|
"-P", ctx->chain, "DROP",
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
return virFirewallApply(fw);
|
return virFirewallApply(fw);
|
||||||
}
|
}
|
||||||
@ -109,13 +109,13 @@ ebtablesForwardAllowIn(ebtablesContext *ctx,
|
|||||||
g_autoptr(virFirewall) fw = virFirewallNew();
|
g_autoptr(virFirewall) fw = virFirewallNew();
|
||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_ETHERNET,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_ETHERNET,
|
||||||
action == ADD ? "--insert" : "--delete",
|
action == ADD ? "--insert" : "--delete",
|
||||||
ctx->chain,
|
ctx->chain,
|
||||||
"--in-interface", iface,
|
"--in-interface", iface,
|
||||||
"--source", macaddr,
|
"--source", macaddr,
|
||||||
"--jump", "ACCEPT",
|
"--jump", "ACCEPT",
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
return virFirewallApply(fw);
|
return virFirewallApply(fw);
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ VIR_ENUM_IMPL(virFirewallLayerCommand,
|
|||||||
IP6TABLES,
|
IP6TABLES,
|
||||||
);
|
);
|
||||||
|
|
||||||
struct _virFirewallRule {
|
struct _virFirewallCmd {
|
||||||
virFirewallLayer layer;
|
virFirewallLayer layer;
|
||||||
|
|
||||||
virFirewallQueryCallback queryCB;
|
virFirewallQueryCallback queryCB;
|
||||||
@ -62,10 +62,10 @@ struct _virFirewallGroup {
|
|||||||
unsigned int rollbackFlags;
|
unsigned int rollbackFlags;
|
||||||
|
|
||||||
size_t naction;
|
size_t naction;
|
||||||
virFirewallRule **action;
|
virFirewallCmd **action;
|
||||||
|
|
||||||
size_t nrollback;
|
size_t nrollback;
|
||||||
virFirewallRule **rollback;
|
virFirewallCmd **rollback;
|
||||||
|
|
||||||
bool addingRollback;
|
bool addingRollback;
|
||||||
};
|
};
|
||||||
@ -79,7 +79,7 @@ struct _virFirewall {
|
|||||||
size_t currentGroup;
|
size_t currentGroup;
|
||||||
};
|
};
|
||||||
|
|
||||||
static virMutex ruleLock = VIR_MUTEX_INITIALIZER;
|
static virMutex fwCmdLock = VIR_MUTEX_INITIALIZER;
|
||||||
|
|
||||||
static virFirewallGroup *
|
static virFirewallGroup *
|
||||||
virFirewallGroupNew(void)
|
virFirewallGroupNew(void)
|
||||||
@ -107,17 +107,17 @@ virFirewall *virFirewallNew(void)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
virFirewallRuleFree(virFirewallRule *rule)
|
virFirewallCmdFree(virFirewallCmd *fwCmd)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
if (!rule)
|
if (!fwCmd)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 0; i < rule->argsLen; i++)
|
for (i = 0; i < fwCmd->argsLen; i++)
|
||||||
g_free(rule->args[i]);
|
g_free(fwCmd->args[i]);
|
||||||
g_free(rule->args);
|
g_free(fwCmd->args);
|
||||||
g_free(rule);
|
g_free(fwCmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -130,11 +130,11 @@ virFirewallGroupFree(virFirewallGroup *group)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 0; i < group->naction; i++)
|
for (i = 0; i < group->naction; i++)
|
||||||
virFirewallRuleFree(group->action[i]);
|
virFirewallCmdFree(group->action[i]);
|
||||||
g_free(group->action);
|
g_free(group->action);
|
||||||
|
|
||||||
for (i = 0; i < group->nrollback; i++)
|
for (i = 0; i < group->nrollback; i++)
|
||||||
virFirewallRuleFree(group->rollback[i]);
|
virFirewallCmdFree(group->rollback[i]);
|
||||||
g_free(group->rollback);
|
g_free(group->rollback);
|
||||||
|
|
||||||
g_free(group);
|
g_free(group);
|
||||||
@ -167,9 +167,9 @@ void virFirewallFree(virFirewall *firewall)
|
|||||||
return; \
|
return; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define VIR_FIREWALL_RULE_RETURN_IF_ERROR(firewall, rule)\
|
#define VIR_FIREWALL_CMD_RETURN_IF_ERROR(firewall, fwCmd)\
|
||||||
do { \
|
do { \
|
||||||
if (!firewall || firewall->err || !rule) \
|
if (!firewall || firewall->err || !fwCmd) \
|
||||||
return; \
|
return; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
@ -179,22 +179,22 @@ void virFirewallFree(virFirewall *firewall)
|
|||||||
return NULL; \
|
return NULL; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define ADD_ARG(rule, str) \
|
#define ADD_ARG(fwCmd, str) \
|
||||||
do { \
|
do { \
|
||||||
VIR_RESIZE_N(rule->args, rule->argsAlloc, rule->argsLen, 1); \
|
VIR_RESIZE_N(fwCmd->args, fwCmd->argsAlloc, fwCmd->argsLen, 1); \
|
||||||
rule->args[rule->argsLen++] = g_strdup(str); \
|
fwCmd->args[fwCmd->argsLen++] = g_strdup(str); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
static virFirewallRule *
|
static virFirewallCmd *
|
||||||
virFirewallAddRuleFullV(virFirewall *firewall,
|
virFirewallAddCmdFullV(virFirewall *firewall,
|
||||||
virFirewallLayer layer,
|
virFirewallLayer layer,
|
||||||
bool ignoreErrors,
|
bool ignoreErrors,
|
||||||
virFirewallQueryCallback cb,
|
virFirewallQueryCallback cb,
|
||||||
void *opaque,
|
void *opaque,
|
||||||
va_list args)
|
va_list args)
|
||||||
{
|
{
|
||||||
virFirewallGroup *group;
|
virFirewallGroup *group;
|
||||||
virFirewallRule *rule;
|
virFirewallCmd *fwCmd;
|
||||||
char *str;
|
char *str;
|
||||||
|
|
||||||
VIR_FIREWALL_RETURN_NULL_IF_ERROR(firewall);
|
VIR_FIREWALL_RETURN_NULL_IF_ERROR(firewall);
|
||||||
@ -206,43 +206,43 @@ virFirewallAddRuleFullV(virFirewall *firewall,
|
|||||||
group = firewall->groups[firewall->currentGroup];
|
group = firewall->groups[firewall->currentGroup];
|
||||||
|
|
||||||
|
|
||||||
rule = g_new0(virFirewallRule, 1);
|
fwCmd = g_new0(virFirewallCmd, 1);
|
||||||
|
|
||||||
rule->layer = layer;
|
fwCmd->layer = layer;
|
||||||
rule->queryCB = cb;
|
fwCmd->queryCB = cb;
|
||||||
rule->queryOpaque = opaque;
|
fwCmd->queryOpaque = opaque;
|
||||||
rule->ignoreErrors = ignoreErrors;
|
fwCmd->ignoreErrors = ignoreErrors;
|
||||||
|
|
||||||
switch (rule->layer) {
|
switch (fwCmd->layer) {
|
||||||
case VIR_FIREWALL_LAYER_ETHERNET:
|
case VIR_FIREWALL_LAYER_ETHERNET:
|
||||||
ADD_ARG(rule, "--concurrent");
|
ADD_ARG(fwCmd, "--concurrent");
|
||||||
break;
|
break;
|
||||||
case VIR_FIREWALL_LAYER_IPV4:
|
case VIR_FIREWALL_LAYER_IPV4:
|
||||||
ADD_ARG(rule, "-w");
|
ADD_ARG(fwCmd, "-w");
|
||||||
break;
|
break;
|
||||||
case VIR_FIREWALL_LAYER_IPV6:
|
case VIR_FIREWALL_LAYER_IPV6:
|
||||||
ADD_ARG(rule, "-w");
|
ADD_ARG(fwCmd, "-w");
|
||||||
break;
|
break;
|
||||||
case VIR_FIREWALL_LAYER_LAST:
|
case VIR_FIREWALL_LAYER_LAST:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((str = va_arg(args, char *)) != NULL)
|
while ((str = va_arg(args, char *)) != NULL)
|
||||||
ADD_ARG(rule, str);
|
ADD_ARG(fwCmd, str);
|
||||||
|
|
||||||
if (group->addingRollback) {
|
if (group->addingRollback) {
|
||||||
VIR_APPEND_ELEMENT_COPY(group->rollback, group->nrollback, rule);
|
VIR_APPEND_ELEMENT_COPY(group->rollback, group->nrollback, fwCmd);
|
||||||
} else {
|
} else {
|
||||||
VIR_APPEND_ELEMENT_COPY(group->action, group->naction, rule);
|
VIR_APPEND_ELEMENT_COPY(group->action, group->naction, fwCmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return rule;
|
return fwCmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virFirewallAddRuleFull:
|
* virFirewallAddCmdFull:
|
||||||
* @firewall: firewall ruleset to add to
|
* @firewall: firewall ruleset to add to
|
||||||
* @layer: the firewall layer to change
|
* @layer: the firewall layer to change
|
||||||
* @ignoreErrors: true to ignore failure of the command
|
* @ignoreErrors: true to ignore failure of the command
|
||||||
@ -253,7 +253,7 @@ virFirewallAddRuleFullV(virFirewall *firewall,
|
|||||||
* Add any type of rule to the firewall ruleset. Any output
|
* Add any type of rule to the firewall ruleset. Any output
|
||||||
* generated by the addition will be fed into the query
|
* generated by the addition will be fed into the query
|
||||||
* callback @cb. This callback is permitted to create new
|
* callback @cb. This callback is permitted to create new
|
||||||
* rules by invoking the virFirewallAddRule method, but
|
* rules by invoking the virFirewallAddCmd method, but
|
||||||
* is not permitted to start new transactions.
|
* is not permitted to start new transactions.
|
||||||
*
|
*
|
||||||
* If @ignoreErrors is set to TRUE, then any failure of
|
* If @ignoreErrors is set to TRUE, then any failure of
|
||||||
@ -263,31 +263,31 @@ virFirewallAddRuleFullV(virFirewall *firewall,
|
|||||||
*
|
*
|
||||||
* Returns the new rule
|
* Returns the new rule
|
||||||
*/
|
*/
|
||||||
virFirewallRule *virFirewallAddRuleFull(virFirewall *firewall,
|
virFirewallCmd *virFirewallAddCmdFull(virFirewall *firewall,
|
||||||
virFirewallLayer layer,
|
virFirewallLayer layer,
|
||||||
bool ignoreErrors,
|
bool ignoreErrors,
|
||||||
virFirewallQueryCallback cb,
|
virFirewallQueryCallback cb,
|
||||||
void *opaque,
|
void *opaque,
|
||||||
...)
|
...)
|
||||||
{
|
{
|
||||||
virFirewallRule *rule;
|
virFirewallCmd *fwCmd;
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, opaque);
|
va_start(args, opaque);
|
||||||
rule = virFirewallAddRuleFullV(firewall, layer, ignoreErrors, cb, opaque, args);
|
fwCmd = virFirewallAddCmdFullV(firewall, layer, ignoreErrors, cb, opaque, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
return rule;
|
return fwCmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virFirewallRemoveRule:
|
* virFirewallRemoveCmd:
|
||||||
* @firewall: firewall ruleset to remove from
|
* @firewall: firewall ruleset to remove from
|
||||||
* @rule: the rule to remove
|
* @rule: the rule to remove
|
||||||
*
|
*
|
||||||
* Remove a rule from the current transaction
|
* Remove a rule from the current transaction
|
||||||
*/
|
*/
|
||||||
void virFirewallRemoveRule(virFirewall *firewall,
|
void virFirewallRemoveCmd(virFirewall *firewall,
|
||||||
virFirewallRule *rule)
|
virFirewallCmd *fwCmd)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
virFirewallGroup *group;
|
virFirewallGroup *group;
|
||||||
@ -306,21 +306,21 @@ void virFirewallRemoveRule(virFirewall *firewall,
|
|||||||
|
|
||||||
if (group->addingRollback) {
|
if (group->addingRollback) {
|
||||||
for (i = 0; i < group->nrollback; i++) {
|
for (i = 0; i < group->nrollback; i++) {
|
||||||
if (group->rollback[i] == rule) {
|
if (group->rollback[i] == fwCmd) {
|
||||||
VIR_DELETE_ELEMENT(group->rollback,
|
VIR_DELETE_ELEMENT(group->rollback,
|
||||||
i,
|
i,
|
||||||
group->nrollback);
|
group->nrollback);
|
||||||
virFirewallRuleFree(rule);
|
virFirewallCmdFree(fwCmd);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (i = 0; i < group->naction; i++) {
|
for (i = 0; i < group->naction; i++) {
|
||||||
if (group->action[i] == rule) {
|
if (group->action[i] == fwCmd) {
|
||||||
VIR_DELETE_ELEMENT(group->action,
|
VIR_DELETE_ELEMENT(group->action,
|
||||||
i,
|
i,
|
||||||
group->naction);
|
group->naction);
|
||||||
virFirewallRuleFree(rule);
|
virFirewallCmdFree(fwCmd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -328,45 +328,45 @@ void virFirewallRemoveRule(virFirewall *firewall,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void virFirewallRuleAddArg(virFirewall *firewall,
|
void virFirewallCmdAddArg(virFirewall *firewall,
|
||||||
virFirewallRule *rule,
|
virFirewallCmd *fwCmd,
|
||||||
const char *arg)
|
const char *arg)
|
||||||
{
|
{
|
||||||
VIR_FIREWALL_RULE_RETURN_IF_ERROR(firewall, rule);
|
VIR_FIREWALL_CMD_RETURN_IF_ERROR(firewall, fwCmd);
|
||||||
|
|
||||||
ADD_ARG(rule, arg);
|
ADD_ARG(fwCmd, arg);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void virFirewallRuleAddArgFormat(virFirewall *firewall,
|
void virFirewallCmdAddArgFormat(virFirewall *firewall,
|
||||||
virFirewallRule *rule,
|
virFirewallCmd *fwCmd,
|
||||||
const char *fmt, ...)
|
const char *fmt, ...)
|
||||||
{
|
{
|
||||||
g_autofree char *arg = NULL;
|
g_autofree char *arg = NULL;
|
||||||
va_list list;
|
va_list list;
|
||||||
|
|
||||||
VIR_FIREWALL_RULE_RETURN_IF_ERROR(firewall, rule);
|
VIR_FIREWALL_CMD_RETURN_IF_ERROR(firewall, fwCmd);
|
||||||
|
|
||||||
va_start(list, fmt);
|
va_start(list, fmt);
|
||||||
arg = g_strdup_vprintf(fmt, list);
|
arg = g_strdup_vprintf(fmt, list);
|
||||||
va_end(list);
|
va_end(list);
|
||||||
|
|
||||||
ADD_ARG(rule, arg);
|
ADD_ARG(fwCmd, arg);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void virFirewallRuleAddArgSet(virFirewall *firewall,
|
void virFirewallCmdAddArgSet(virFirewall *firewall,
|
||||||
virFirewallRule *rule,
|
virFirewallCmd *fwCmd,
|
||||||
const char *const *args)
|
const char *const *args)
|
||||||
{
|
{
|
||||||
VIR_FIREWALL_RULE_RETURN_IF_ERROR(firewall, rule);
|
VIR_FIREWALL_CMD_RETURN_IF_ERROR(firewall, fwCmd);
|
||||||
|
|
||||||
while (*args) {
|
while (*args) {
|
||||||
ADD_ARG(rule, *args);
|
ADD_ARG(fwCmd, *args);
|
||||||
args++;
|
args++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -374,19 +374,19 @@ void virFirewallRuleAddArgSet(virFirewall *firewall,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void virFirewallRuleAddArgList(virFirewall *firewall,
|
void virFirewallCmdAddArgList(virFirewall *firewall,
|
||||||
virFirewallRule *rule,
|
virFirewallCmd *fwCmd,
|
||||||
...)
|
...)
|
||||||
{
|
{
|
||||||
va_list list;
|
va_list list;
|
||||||
const char *str;
|
const char *str;
|
||||||
|
|
||||||
VIR_FIREWALL_RULE_RETURN_IF_ERROR(firewall, rule);
|
VIR_FIREWALL_CMD_RETURN_IF_ERROR(firewall, fwCmd);
|
||||||
|
|
||||||
va_start(list, rule);
|
va_start(list, fwCmd);
|
||||||
|
|
||||||
while ((str = va_arg(list, char *)) != NULL)
|
while ((str = va_arg(list, char *)) != NULL)
|
||||||
ADD_ARG(rule, str);
|
ADD_ARG(fwCmd, str);
|
||||||
|
|
||||||
va_end(list);
|
va_end(list);
|
||||||
|
|
||||||
@ -394,11 +394,11 @@ void virFirewallRuleAddArgList(virFirewall *firewall,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
size_t virFirewallRuleGetArgCount(virFirewallRule *rule)
|
size_t virFirewallCmdGetArgCount(virFirewallCmd *fwCmd)
|
||||||
{
|
{
|
||||||
if (!rule)
|
if (!fwCmd)
|
||||||
return 0;
|
return 0;
|
||||||
return rule->argsLen;
|
return fwCmd->argsLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -462,16 +462,16 @@ void virFirewallStartRollback(virFirewall *firewall,
|
|||||||
|
|
||||||
|
|
||||||
char *
|
char *
|
||||||
virFirewallRuleToString(const char *cmd,
|
virFirewallCmdToString(const char *cmd,
|
||||||
virFirewallRule *rule)
|
virFirewallCmd *fwCmd)
|
||||||
{
|
{
|
||||||
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
|
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
virBufferAdd(&buf, cmd, -1);
|
virBufferAdd(&buf, cmd, -1);
|
||||||
for (i = 0; i < rule->argsLen; i++) {
|
for (i = 0; i < fwCmd->argsLen; i++) {
|
||||||
virBufferAddLit(&buf, " ");
|
virBufferAddLit(&buf, " ");
|
||||||
virBufferAdd(&buf, rule->args[i], -1);
|
virBufferAdd(&buf, fwCmd->args[i], -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return virBufferContentAndReset(&buf);
|
return virBufferContentAndReset(&buf);
|
||||||
@ -479,12 +479,12 @@ virFirewallRuleToString(const char *cmd,
|
|||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
virFirewallApplyRuleDirect(virFirewallRule *rule,
|
virFirewallApplyCmdDirect(virFirewallCmd *fwCmd,
|
||||||
bool ignoreErrors,
|
bool ignoreErrors,
|
||||||
char **output)
|
char **output)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
const char *bin = virFirewallLayerCommandTypeToString(rule->layer);
|
const char *bin = virFirewallLayerCommandTypeToString(fwCmd->layer);
|
||||||
g_autoptr(virCommand) cmd = NULL;
|
g_autoptr(virCommand) cmd = NULL;
|
||||||
g_autofree char *cmdStr = NULL;
|
g_autofree char *cmdStr = NULL;
|
||||||
int status;
|
int status;
|
||||||
@ -493,17 +493,17 @@ virFirewallApplyRuleDirect(virFirewallRule *rule,
|
|||||||
if (!bin) {
|
if (!bin) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("Unknown firewall layer %1$d"),
|
_("Unknown firewall layer %1$d"),
|
||||||
rule->layer);
|
fwCmd->layer);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd = virCommandNewArgList(bin, NULL);
|
cmd = virCommandNewArgList(bin, NULL);
|
||||||
|
|
||||||
for (i = 0; i < rule->argsLen; i++)
|
for (i = 0; i < fwCmd->argsLen; i++)
|
||||||
virCommandAddArg(cmd, rule->args[i]);
|
virCommandAddArg(cmd, fwCmd->args[i]);
|
||||||
|
|
||||||
cmdStr = virCommandToString(cmd, false);
|
cmdStr = virCommandToString(cmd, false);
|
||||||
VIR_INFO("Applying rule '%s'", NULLSTR(cmdStr));
|
VIR_INFO("Running firewall command '%s'", NULLSTR(cmdStr));
|
||||||
|
|
||||||
virCommandSetOutputBuffer(cmd, output);
|
virCommandSetOutputBuffer(cmd, output);
|
||||||
virCommandSetErrorBuffer(cmd, &error);
|
virCommandSetErrorBuffer(cmd, &error);
|
||||||
@ -516,7 +516,7 @@ virFirewallApplyRuleDirect(virFirewallRule *rule,
|
|||||||
VIR_DEBUG("Ignoring error running command");
|
VIR_DEBUG("Ignoring error running command");
|
||||||
} else {
|
} else {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("Failed to apply firewall rules %1$s: %2$s"),
|
_("Failed to run firewall command %1$s: %2$s"),
|
||||||
NULLSTR(cmdStr), NULLSTR(error));
|
NULLSTR(cmdStr), NULLSTR(error));
|
||||||
VIR_FREE(*output);
|
VIR_FREE(*output);
|
||||||
return -1;
|
return -1;
|
||||||
@ -528,30 +528,30 @@ virFirewallApplyRuleDirect(virFirewallRule *rule,
|
|||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
virFirewallApplyRule(virFirewall *firewall,
|
virFirewallApplyCmd(virFirewall *firewall,
|
||||||
virFirewallRule *rule,
|
virFirewallCmd *fwCmd,
|
||||||
bool ignoreErrors)
|
bool ignoreErrors)
|
||||||
{
|
{
|
||||||
g_autofree char *output = NULL;
|
g_autofree char *output = NULL;
|
||||||
g_auto(GStrv) lines = NULL;
|
g_auto(GStrv) lines = NULL;
|
||||||
|
|
||||||
if (rule->ignoreErrors)
|
if (fwCmd->ignoreErrors)
|
||||||
ignoreErrors = rule->ignoreErrors;
|
ignoreErrors = fwCmd->ignoreErrors;
|
||||||
|
|
||||||
if (virFirewallApplyRuleDirect(rule, ignoreErrors, &output) < 0)
|
if (virFirewallApplyCmdDirect(fwCmd, ignoreErrors, &output) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (rule->queryCB && output) {
|
if (fwCmd->queryCB && output) {
|
||||||
if (!(lines = g_strsplit(output, "\n", -1)))
|
if (!(lines = g_strsplit(output, "\n", -1)))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
VIR_DEBUG("Invoking query %p with '%s'", rule->queryCB, output);
|
VIR_DEBUG("Invoking query %p with '%s'", fwCmd->queryCB, output);
|
||||||
if (rule->queryCB(firewall, rule->layer, (const char *const *)lines, rule->queryOpaque) < 0)
|
if (fwCmd->queryCB(firewall, fwCmd->layer, (const char *const *)lines, fwCmd->queryOpaque) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (firewall->err) {
|
if (firewall->err) {
|
||||||
virReportSystemError(firewall->err, "%s",
|
virReportSystemError(firewall->err, "%s",
|
||||||
_("Unable to create rule"));
|
_("Unable to create firewall command"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -573,9 +573,9 @@ virFirewallApplyGroup(virFirewall *firewall,
|
|||||||
firewall->currentGroup = idx;
|
firewall->currentGroup = idx;
|
||||||
group->addingRollback = false;
|
group->addingRollback = false;
|
||||||
for (i = 0; i < group->naction; i++) {
|
for (i = 0; i < group->naction; i++) {
|
||||||
if (virFirewallApplyRule(firewall,
|
if (virFirewallApplyCmd(firewall,
|
||||||
group->action[i],
|
group->action[i],
|
||||||
ignoreErrors) < 0)
|
ignoreErrors) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -592,11 +592,8 @@ virFirewallRollbackGroup(virFirewall *firewall,
|
|||||||
VIR_INFO("Starting rollback for group %p", group);
|
VIR_INFO("Starting rollback for group %p", group);
|
||||||
firewall->currentGroup = idx;
|
firewall->currentGroup = idx;
|
||||||
group->addingRollback = true;
|
group->addingRollback = true;
|
||||||
for (i = 0; i < group->nrollback; i++) {
|
for (i = 0; i < group->nrollback; i++)
|
||||||
ignore_value(virFirewallApplyRule(firewall,
|
ignore_value(virFirewallApplyCmd(firewall, group->rollback[i], true));
|
||||||
group->rollback[i],
|
|
||||||
true));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -604,7 +601,7 @@ int
|
|||||||
virFirewallApply(virFirewall *firewall)
|
virFirewallApply(virFirewall *firewall)
|
||||||
{
|
{
|
||||||
size_t i, j;
|
size_t i, j;
|
||||||
VIR_LOCK_GUARD lock = virLockGuardLock(&ruleLock);
|
VIR_LOCK_GUARD lock = virLockGuardLock(&fwCmdLock);
|
||||||
|
|
||||||
if (!firewall || firewall->err) {
|
if (!firewall || firewall->err) {
|
||||||
int err = EINVAL;
|
int err = EINVAL;
|
||||||
@ -612,7 +609,7 @@ virFirewallApply(virFirewall *firewall)
|
|||||||
if (firewall)
|
if (firewall)
|
||||||
err = firewall->err;
|
err = firewall->err;
|
||||||
|
|
||||||
virReportSystemError(err, "%s", _("Unable to create rule"));
|
virReportSystemError(err, "%s", _("Unable to create firewall command"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
typedef struct _virFirewall virFirewall;
|
typedef struct _virFirewall virFirewall;
|
||||||
|
|
||||||
typedef struct _virFirewallRule virFirewallRule;
|
typedef struct _virFirewallCmd virFirewallCmd;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIR_FIREWALL_LAYER_ETHERNET,
|
VIR_FIREWALL_LAYER_ETHERNET,
|
||||||
@ -39,7 +39,7 @@ virFirewall *virFirewallNew(void);
|
|||||||
void virFirewallFree(virFirewall *firewall);
|
void virFirewallFree(virFirewall *firewall);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virFirewallAddRule:
|
* virFirewallAddCmd:
|
||||||
* @firewall: firewall ruleset to add to
|
* @firewall: firewall ruleset to add to
|
||||||
* @layer: the firewall layer to change
|
* @layer: the firewall layer to change
|
||||||
* @...: NULL terminated list of strings for the rule
|
* @...: NULL terminated list of strings for the rule
|
||||||
@ -48,49 +48,49 @@ void virFirewallFree(virFirewall *firewall);
|
|||||||
*
|
*
|
||||||
* Returns the new rule
|
* Returns the new rule
|
||||||
*/
|
*/
|
||||||
#define virFirewallAddRule(firewall, layer, ...) \
|
#define virFirewallAddCmd(firewall, layer, ...) \
|
||||||
virFirewallAddRuleFull(firewall, layer, false, NULL, NULL, __VA_ARGS__)
|
virFirewallAddCmdFull(firewall, layer, false, NULL, NULL, __VA_ARGS__)
|
||||||
|
|
||||||
typedef int (*virFirewallQueryCallback)(virFirewall *firewall,
|
typedef int (*virFirewallQueryCallback)(virFirewall *firewall,
|
||||||
virFirewallLayer layer,
|
virFirewallLayer layer,
|
||||||
const char *const *lines,
|
const char *const *lines,
|
||||||
void *opaque);
|
void *opaque);
|
||||||
|
|
||||||
virFirewallRule *virFirewallAddRuleFull(virFirewall *firewall,
|
virFirewallCmd *virFirewallAddCmdFull(virFirewall *firewall,
|
||||||
virFirewallLayer layer,
|
virFirewallLayer layer,
|
||||||
bool ignoreErrors,
|
bool ignoreErrors,
|
||||||
virFirewallQueryCallback cb,
|
virFirewallQueryCallback cb,
|
||||||
void *opaque,
|
void *opaque,
|
||||||
...)
|
...)
|
||||||
G_GNUC_NULL_TERMINATED;
|
G_GNUC_NULL_TERMINATED;
|
||||||
|
|
||||||
void virFirewallRemoveRule(virFirewall *firewall,
|
void virFirewallRemoveCmd(virFirewall *firewall,
|
||||||
virFirewallRule *rule);
|
virFirewallCmd *rule);
|
||||||
|
|
||||||
void virFirewallRuleAddArg(virFirewall *firewall,
|
void virFirewallCmdAddArg(virFirewall *firewall,
|
||||||
virFirewallRule *rule,
|
virFirewallCmd *rule,
|
||||||
const char *arg)
|
const char *arg)
|
||||||
ATTRIBUTE_NONNULL(3);
|
ATTRIBUTE_NONNULL(3);
|
||||||
|
|
||||||
void virFirewallRuleAddArgFormat(virFirewall *firewall,
|
void virFirewallCmdAddArgFormat(virFirewall *firewall,
|
||||||
virFirewallRule *rule,
|
virFirewallCmd *rule,
|
||||||
const char *fmt, ...)
|
const char *fmt, ...)
|
||||||
ATTRIBUTE_NONNULL(3) G_GNUC_PRINTF(3, 4);
|
ATTRIBUTE_NONNULL(3) G_GNUC_PRINTF(3, 4);
|
||||||
|
|
||||||
void virFirewallRuleAddArgSet(virFirewall *firewall,
|
void virFirewallCmdAddArgSet(virFirewall *firewall,
|
||||||
virFirewallRule *rule,
|
virFirewallCmd *rule,
|
||||||
const char *const *args)
|
const char *const *args)
|
||||||
ATTRIBUTE_NONNULL(3);
|
ATTRIBUTE_NONNULL(3);
|
||||||
|
|
||||||
void virFirewallRuleAddArgList(virFirewall *firewall,
|
void virFirewallCmdAddArgList(virFirewall *firewall,
|
||||||
virFirewallRule *rule,
|
virFirewallCmd *rule,
|
||||||
...)
|
...)
|
||||||
G_GNUC_NULL_TERMINATED;
|
G_GNUC_NULL_TERMINATED;
|
||||||
|
|
||||||
size_t virFirewallRuleGetArgCount(virFirewallRule *rule);
|
size_t virFirewallCmdGetArgCount(virFirewallCmd *rule);
|
||||||
|
|
||||||
char *virFirewallRuleToString(const char *cmd,
|
char *virFirewallCmdToString(const char *cmd,
|
||||||
virFirewallRule *rule);
|
virFirewallCmd *rule);
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
/* Ignore all errors when applying rules, so no
|
/* Ignore all errors when applying rules, so no
|
||||||
|
@ -74,15 +74,15 @@ testFirewallSingleGroup(const void *opaque G_GNUC_UNUSED)
|
|||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "!192.168.122.1",
|
"--source", "!192.168.122.1",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
if (virFirewallApply(fw) < 0)
|
if (virFirewallApply(fw) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
@ -107,28 +107,28 @@ testFirewallRemoveRule(const void *opaque G_GNUC_UNUSED)
|
|||||||
const char *expected =
|
const char *expected =
|
||||||
IPTABLES " -w -A INPUT --source 192.168.122.1 --jump ACCEPT\n"
|
IPTABLES " -w -A INPUT --source 192.168.122.1 --jump ACCEPT\n"
|
||||||
IPTABLES " -w -A INPUT --source '!192.168.122.1' --jump REJECT\n";
|
IPTABLES " -w -A INPUT --source '!192.168.122.1' --jump REJECT\n";
|
||||||
virFirewallRule *fwrule;
|
virFirewallCmd *fwrule;
|
||||||
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
|
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
|
||||||
|
|
||||||
virCommandSetDryRun(dryRunToken, &cmdbuf, false, false, NULL, NULL);
|
virCommandSetDryRun(dryRunToken, &cmdbuf, false, false, NULL, NULL);
|
||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
fwrule = virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
fwrule = virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT", NULL);
|
"-A", "INPUT", NULL);
|
||||||
virFirewallRuleAddArg(fw, fwrule, "--source");
|
virFirewallCmdAddArg(fw, fwrule, "--source");
|
||||||
virFirewallRemoveRule(fw, fwrule);
|
virFirewallRemoveCmd(fw, fwrule);
|
||||||
|
|
||||||
fwrule = virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
fwrule = virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT", NULL);
|
"-A", "INPUT", NULL);
|
||||||
virFirewallRuleAddArg(fw, fwrule, "--source");
|
virFirewallCmdAddArg(fw, fwrule, "--source");
|
||||||
virFirewallRuleAddArgFormat(fw, fwrule, "%s", "!192.168.122.1");
|
virFirewallCmdAddArgFormat(fw, fwrule, "%s", "!192.168.122.1");
|
||||||
virFirewallRuleAddArgList(fw, fwrule, "--jump", "REJECT", NULL);
|
virFirewallCmdAddArgList(fw, fwrule, "--jump", "REJECT", NULL);
|
||||||
|
|
||||||
if (virFirewallApply(fw) < 0)
|
if (virFirewallApply(fw) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
@ -161,26 +161,26 @@ testFirewallManyGroups(const void *opaque G_GNUC_UNUSED)
|
|||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "!192.168.122.1",
|
"--source", "!192.168.122.1",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "OUTPUT",
|
"-A", "OUTPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "OUTPUT",
|
"-A", "OUTPUT",
|
||||||
"--jump", "DROP", NULL);
|
"--jump", "DROP", NULL);
|
||||||
|
|
||||||
|
|
||||||
if (virFirewallApply(fw) < 0)
|
if (virFirewallApply(fw) < 0)
|
||||||
@ -235,26 +235,26 @@ testFirewallIgnoreFailGroup(const void *opaque G_GNUC_UNUSED)
|
|||||||
|
|
||||||
virFirewallStartTransaction(fw, VIR_FIREWALL_TRANSACTION_IGNORE_ERRORS);
|
virFirewallStartTransaction(fw, VIR_FIREWALL_TRANSACTION_IGNORE_ERRORS);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.255",
|
"--source", "192.168.122.255",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "OUTPUT",
|
"-A", "OUTPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "OUTPUT",
|
"-A", "OUTPUT",
|
||||||
"--jump", "DROP", NULL);
|
"--jump", "DROP", NULL);
|
||||||
|
|
||||||
|
|
||||||
if (virFirewallApply(fw) < 0)
|
if (virFirewallApply(fw) < 0)
|
||||||
@ -288,25 +288,25 @@ testFirewallIgnoreFailRule(const void *opaque G_GNUC_UNUSED)
|
|||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallAddRuleFull(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmdFull(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
true, NULL, NULL,
|
true, NULL, NULL,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.255",
|
"--source", "192.168.122.255",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "OUTPUT",
|
"-A", "OUTPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "OUTPUT",
|
"-A", "OUTPUT",
|
||||||
"--jump", "DROP", NULL);
|
"--jump", "DROP", NULL);
|
||||||
|
|
||||||
|
|
||||||
if (virFirewallApply(fw) < 0)
|
if (virFirewallApply(fw) < 0)
|
||||||
@ -338,20 +338,20 @@ testFirewallNoRollback(const void *opaque G_GNUC_UNUSED)
|
|||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.255",
|
"--source", "192.168.122.255",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "!192.168.122.1",
|
"--source", "!192.168.122.1",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
if (virFirewallApply(fw) == 0) {
|
if (virFirewallApply(fw) == 0) {
|
||||||
fprintf(stderr, "Firewall apply unexpectedly worked\n");
|
fprintf(stderr, "Firewall apply unexpectedly worked\n");
|
||||||
@ -386,37 +386,37 @@ testFirewallSingleRollback(const void *opaque G_GNUC_UNUSED)
|
|||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.255",
|
"--source", "192.168.122.255",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "!192.168.122.1",
|
"--source", "!192.168.122.1",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallStartRollback(fw, 0);
|
virFirewallStartRollback(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-D", "INPUT",
|
"-D", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-D", "INPUT",
|
"-D", "INPUT",
|
||||||
"--source", "192.168.122.255",
|
"--source", "192.168.122.255",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-D", "INPUT",
|
"-D", "INPUT",
|
||||||
"--source", "!192.168.122.1",
|
"--source", "!192.168.122.1",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
if (virFirewallApply(fw) == 0) {
|
if (virFirewallApply(fw) == 0) {
|
||||||
fprintf(stderr, "Firewall apply unexpectedly worked\n");
|
fprintf(stderr, "Firewall apply unexpectedly worked\n");
|
||||||
@ -450,41 +450,41 @@ testFirewallManyRollback(const void *opaque G_GNUC_UNUSED)
|
|||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallStartRollback(fw, 0);
|
virFirewallStartRollback(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-D", "INPUT",
|
"-D", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.255",
|
"--source", "192.168.122.255",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "!192.168.122.1",
|
"--source", "!192.168.122.1",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallStartRollback(fw, 0);
|
virFirewallStartRollback(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-D", "INPUT",
|
"-D", "INPUT",
|
||||||
"--source", "192.168.122.255",
|
"--source", "192.168.122.255",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-D", "INPUT",
|
"-D", "INPUT",
|
||||||
"--source", "!192.168.122.1",
|
"--source", "!192.168.122.1",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
if (virFirewallApply(fw) == 0) {
|
if (virFirewallApply(fw) == 0) {
|
||||||
fprintf(stderr, "Firewall apply unexpectedly worked\n");
|
fprintf(stderr, "Firewall apply unexpectedly worked\n");
|
||||||
@ -522,67 +522,67 @@ testFirewallChainedRollback(const void *opaque G_GNUC_UNUSED)
|
|||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallStartRollback(fw, 0);
|
virFirewallStartRollback(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-D", "INPUT",
|
"-D", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.127",
|
"--source", "192.168.122.127",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "!192.168.122.1",
|
"--source", "!192.168.122.1",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallStartRollback(fw, 0);
|
virFirewallStartRollback(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-D", "INPUT",
|
"-D", "INPUT",
|
||||||
"--source", "192.168.122.127",
|
"--source", "192.168.122.127",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-D", "INPUT",
|
"-D", "INPUT",
|
||||||
"--source", "!192.168.122.1",
|
"--source", "!192.168.122.1",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.255",
|
"--source", "192.168.122.255",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "!192.168.122.1",
|
"--source", "!192.168.122.1",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallStartRollback(fw, VIR_FIREWALL_ROLLBACK_INHERIT_PREVIOUS);
|
virFirewallStartRollback(fw, VIR_FIREWALL_ROLLBACK_INHERIT_PREVIOUS);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-D", "INPUT",
|
"-D", "INPUT",
|
||||||
"--source", "192.168.122.255",
|
"--source", "192.168.122.255",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-D", "INPUT",
|
"-D", "INPUT",
|
||||||
"--source", "!192.168.122.1",
|
"--source", "!192.168.122.1",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
if (virFirewallApply(fw) == 0) {
|
if (virFirewallApply(fw) == 0) {
|
||||||
fprintf(stderr, "Firewall apply unexpectedly worked\n");
|
fprintf(stderr, "Firewall apply unexpectedly worked\n");
|
||||||
@ -656,10 +656,10 @@ testFirewallQueryCallback(virFirewall *fw,
|
|||||||
void *opaque G_GNUC_UNUSED)
|
void *opaque G_GNUC_UNUSED)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
virFirewallAddRule(fw, layer,
|
virFirewallAddCmd(fw, layer,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "!192.168.122.129",
|
"--source", "!192.168.122.129",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
for (i = 0; lines[i] != NULL; i++) {
|
for (i = 0; lines[i] != NULL; i++) {
|
||||||
if (expectedLineNum >= G_N_ELEMENTS(expectedLines)) {
|
if (expectedLineNum >= G_N_ELEMENTS(expectedLines)) {
|
||||||
@ -703,46 +703,46 @@ testFirewallQuery(const void *opaque G_GNUC_UNUSED)
|
|||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.1",
|
"--source", "192.168.122.1",
|
||||||
"--jump", "ACCEPT", NULL);
|
"--jump", "ACCEPT", NULL);
|
||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.127",
|
"--source", "192.168.122.127",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallAddRuleFull(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmdFull(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
false,
|
false,
|
||||||
testFirewallQueryCallback,
|
testFirewallQueryCallback,
|
||||||
NULL,
|
NULL,
|
||||||
"-L", NULL);
|
"-L", NULL);
|
||||||
virFirewallAddRuleFull(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmdFull(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
false,
|
false,
|
||||||
testFirewallQueryCallback,
|
testFirewallQueryCallback,
|
||||||
NULL,
|
NULL,
|
||||||
"-t", "nat", "-L", NULL);
|
"-t", "nat", "-L", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.130",
|
"--source", "192.168.122.130",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
|
|
||||||
virFirewallStartTransaction(fw, 0);
|
virFirewallStartTransaction(fw, 0);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "192.168.122.128",
|
"--source", "192.168.122.128",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4,
|
virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
|
||||||
"-A", "INPUT",
|
"-A", "INPUT",
|
||||||
"--source", "!192.168.122.1",
|
"--source", "!192.168.122.1",
|
||||||
"--jump", "REJECT", NULL);
|
"--jump", "REJECT", NULL);
|
||||||
|
|
||||||
if (virFirewallApply(fw) < 0)
|
if (virFirewallApply(fw) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user