From 65524cde81396113a91d373aa37e82e86ccbba54 Mon Sep 17 00:00:00 2001 From: Vadim Kurland Date: Tue, 20 Oct 2009 21:48:53 +0000 Subject: [PATCH] Human-readable names for actions come from platform resource files. This way, we can have aliases for actions depending on the platform. Refs #84 --- build_num | 2 +- doc/ChangeLog | 4 ++ src/gui/ActionsDialog.cpp | 13 +--- src/gui/DialogFactory.cpp | 14 +++++ src/gui/DialogFactory.h | 8 +++ src/gui/FWObjectPropertiesFactory.cpp | 42 +++++++++---- src/gui/FWObjectPropertiesFactory.h | 4 +- src/gui/FWWindow_editor.cpp | 6 +- src/gui/MainRes.qrc | 2 + src/gui/RuleSetModel.cpp | 17 ----- src/gui/RuleSetModel.h | 2 - src/gui/RuleSetView.cpp | 52 +++++++-------- src/gui/platforms.cpp | 91 ++++++++------------------- src/gui/platforms.h | 11 ++-- src/res/platform/fwsm.xml | 36 +++++++---- src/res/platform/iosacl.xml | 36 +++++++---- src/res/platform/ipf.xml | 36 +++++++---- src/res/platform/ipfw.xml | 36 +++++++---- src/res/platform/iptables.xml | 39 ++++++++---- src/res/platform/pf.xml | 36 +++++++---- src/res/platform/pix.xml | 36 +++++++---- src/res/platform/unknown.xml | 36 +++++++---- 22 files changed, 318 insertions(+), 241 deletions(-) diff --git a/build_num b/build_num index 2eaf9e80b..a6f8b3076 100644 --- a/build_num +++ b/build_num @@ -1 +1 @@ -#define BUILD_NUM 1621 +#define BUILD_NUM 1622 diff --git a/doc/ChangeLog b/doc/ChangeLog index 40af3b676..4f7815b72 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,5 +1,9 @@ 2009-10-20 vadim + * platforms.cpp (getActionNameForPlatform): Human-readable names + for Policy and NAT rule actions come from the platform .xml + resource file (attribute "description"). + * Support for branch rules in NAT rule sets. Currently only supported on iptables and PF. NAT rules get column "Action" for these platforms, with possible acctions "Translate" and "Branch". diff --git a/src/gui/ActionsDialog.cpp b/src/gui/ActionsDialog.cpp index 1a1f96066..c14cc7270 100644 --- a/src/gui/ActionsDialog.cpp +++ b/src/gui/ActionsDialog.cpp @@ -32,6 +32,7 @@ #include "ActionsDialog.h" #include "FWWindow.h" #include "FWObjectDropArea.h" +#include "DialogFactory.h" #include "fwbuilder/Library.h" #include "fwbuilder/Interface.h" @@ -174,7 +175,6 @@ void ActionsDialog::applyChanges() data.saveAll(); PolicyRule *policy_rule = PolicyRule::cast(rule); - NATRule *nat_rule = NATRule::cast(rule); FWOptions *ropt = rule->getOptionsObject(); @@ -248,7 +248,6 @@ void ActionsDialog::setRule(Rule *r) rule = r; PolicyRule *policy_rule = PolicyRule::cast(r); - NATRule *nat_rule = NATRule::cast(r); FWObject *o = r; while (o!=NULL && Firewall::cast(o)==NULL) o = o->getParent(); @@ -261,13 +260,7 @@ void ActionsDialog::setRule(Rule *r) platform=f->getStr("platform"); - string act; - if (policy_rule) act = policy_rule->getActionAsString(); - if (nat_rule) - { - act = nat_rule->getActionAsString(); - if (act == "Branch") act = "NATBranch"; - } + string act = getRuleAction(r).toStdString(); help_name = string(platform + "_" + act).c_str(); @@ -280,7 +273,7 @@ void ActionsDialog::setRule(Rule *r) fillInterfaces(m_dialog->ipf_route_opt_if); fillInterfaces(m_dialog->pf_route_opt_if); - editor = Resources::getActionEditor(platform, act); + editor = DialogFactory::getActionDialogPageName(f, r); branchNameInput = NULL; diff --git a/src/gui/DialogFactory.cpp b/src/gui/DialogFactory.cpp index ba4019e4a..10826c12f 100644 --- a/src/gui/DialogFactory.cpp +++ b/src/gui/DialogFactory.cpp @@ -28,6 +28,7 @@ #include "../../config.h" #include "global.h" #include "utils.h" +#include "platforms.h" #include "DialogFactory.h" @@ -350,4 +351,17 @@ QWidget *DialogFactory::createClusterGroupOptionsDialog(QWidget *parent, return NULL; } +string DialogFactory::getActionDialogPageName(Firewall *fw, Rule *rule) +{ + string platform = fw->getStr("platform"); + string act = getRuleAction(rule).toStdString(); + string editor_page; + try + { + editor_page = Resources::getTargetCapabilityStr( + platform, "actions/" + act + "/editor_page"); + } catch (FWException &ex) { } + return editor_page; +} + diff --git a/src/gui/DialogFactory.h b/src/gui/DialogFactory.h index 01c434dd9..5e0915789 100644 --- a/src/gui/DialogFactory.h +++ b/src/gui/DialogFactory.h @@ -33,6 +33,8 @@ namespace libfwbuilder { class FWObject; class FWException; + class Firewall; + class Rule; }; @@ -51,6 +53,12 @@ class DialogFactory { throw(libfwbuilder::FWException); static QWidget *createClusterGroupOptionsDialog(QWidget *parent, libfwbuilder::FWObject *o) throw(libfwbuilder::FWException); + + static std::string getActionDialogPageName(libfwbuilder::Firewall *fw, + libfwbuilder::Rule *rule); + }; + + #endif diff --git a/src/gui/FWObjectPropertiesFactory.cpp b/src/gui/FWObjectPropertiesFactory.cpp index 2cd208235..94e92822d 100644 --- a/src/gui/FWObjectPropertiesFactory.cpp +++ b/src/gui/FWObjectPropertiesFactory.cpp @@ -36,6 +36,7 @@ #include "FWObjectPropertiesFactory.h" #include "platforms.h" +#include "DialogFactory.h" #include "fwbuilder/AddressRange.h" #include "fwbuilder/AddressTable.h" @@ -735,13 +736,13 @@ QString FWObjectPropertiesFactory::getObjectPropertiesDetailed(FWObject *obj, * Do not translate literals 'pipe', 'queue', 'divert' below, these refer * to actual ipfw parameters and should not be localized. */ -QString FWObjectPropertiesFactory::getRuleActionProperties(PolicyRule *rule) +QString FWObjectPropertiesFactory::getRuleActionProperties(Rule *rule) { QString par = ""; if (rule!=NULL) { - string act = rule->getActionAsString(); + QString act = getRuleAction(rule); FWObject *o = rule; while (o!=NULL && Firewall::cast(o)==NULL) o=o->getParent(); @@ -751,22 +752,24 @@ QString FWObjectPropertiesFactory::getRuleActionProperties(PolicyRule *rule) string platform=f->getStr("platform"); FWOptions *ropt = rule->getOptionsObject(); - string editor=Resources::getActionEditor(platform,act); + string editor = DialogFactory::getActionDialogPageName(f, rule); - if (editor!="None") + if (editor == "None") return ""; + + if (PolicyRule::isA(rule)) { - switch (rule->getAction()) + switch (PolicyRule::cast(rule)->getAction()) { case PolicyRule::Reject: par = ropt->getStr("action_on_reject").c_str(); break; case PolicyRule::Tag: { - FWObject *tag_object = rule->getTagObject(); + FWObject *tag_object = PolicyRule::cast(rule)->getTagObject(); if (tag_object) par = tag_object->getName().c_str(); else - par = rule->getTagValue().c_str(); + par = PolicyRule::cast(rule)->getTagValue().c_str(); break; } case PolicyRule::Accounting : @@ -847,25 +850,38 @@ QString FWObjectPropertiesFactory::getRuleActionProperties(PolicyRule *rule) default : {} } } - + + if (NATRule::isA(rule)) + { + switch (NATRule::cast(rule)->getAction()) + { + case NATRule::Translate: + break; + + case NATRule::Branch: + FWObject *branch_ruleset = rule->getBranch(); + if (branch_ruleset) + par = branch_ruleset->getName().c_str(); + break; + } + } } return par; } -QString FWObjectPropertiesFactory::getRuleActionPropertiesRich(PolicyRule *rule) +QString FWObjectPropertiesFactory::getRuleActionPropertiesRich(Rule *rule) { FWObject *p=rule; while (p!=NULL && !Firewall::cast(p)) p=p->getParent(); assert(p!=NULL); string platform=p->getStr("platform"); - QString act = getActionNameForPlatform(rule->getAction(),platform.c_str()); - + QString act = getActionNameForPlatform(Firewall::cast(p), rule); QString par = getRuleActionProperties(rule); - QString res = QObject::tr("Action : ")+act+"
\n"; + QString res = QObject::tr("Action : %1
").arg(act); if (!par.isEmpty()) { - res+=QObject::tr("Parameter: ")+par; + res += QObject::tr("Parameter: ")+par; } return res; } diff --git a/src/gui/FWObjectPropertiesFactory.h b/src/gui/FWObjectPropertiesFactory.h index d4fb25e9f..6ba9315a5 100644 --- a/src/gui/FWObjectPropertiesFactory.h +++ b/src/gui/FWObjectPropertiesFactory.h @@ -51,8 +51,8 @@ class FWObjectPropertiesFactory { bool tooltip=false, bool accentName=true, bool richText=true); - static QString getRuleActionProperties(libfwbuilder::PolicyRule *rule); - static QString getRuleActionPropertiesRich(libfwbuilder::PolicyRule *rule); + static QString getRuleActionProperties(libfwbuilder::Rule *rule); + static QString getRuleActionPropertiesRich(libfwbuilder::Rule *rule); static QString getPolicyRuleOptions(libfwbuilder::Rule *rule); static QString getNATRuleOptions(libfwbuilder::Rule *rule); diff --git a/src/gui/FWWindow_editor.cpp b/src/gui/FWWindow_editor.cpp index 25aede803..ce4066e1d 100644 --- a/src/gui/FWWindow_editor.cpp +++ b/src/gui/FWWindow_editor.cpp @@ -33,6 +33,7 @@ #include "FindObjectWidget.h" #include "FindWhereUsedWidget.h" #include "FWBTree.h" +#include "platforms.h" #include "fwbuilder/Firewall.h" #include "fwbuilder/RuleSet.h" @@ -185,10 +186,9 @@ void FWWindow::buildEditorTitleAndIcon(libfwbuilder::FWObject *obj, { FWObject *obj_for_icon = obj; if (ruleset) obj_for_icon = ruleset; - if (rule && PolicyRule::isA(rule) && t == ObjectEditor::optAction) + if (rule && t == ObjectEditor::optAction) { - QString icn = ":/Icons/" ; - icn += PolicyRule::cast(rule)->getActionAsString().c_str(); + QString icn = ":/Icons/" + getRuleAction(rule); LoadPixmap(icn, *pm); // in utils.cpp } else FWBTree().setObjectIcon(obj_for_icon, pm, false); diff --git a/src/gui/MainRes.qrc b/src/gui/MainRes.qrc index ad1a48a1a..1f2ea2da1 100644 --- a/src/gui/MainRes.qrc +++ b/src/gui/MainRes.qrc @@ -49,6 +49,8 @@ Icons/both_16.png Icons/branch_16.png Icons/branch_25.png + Icons/branch_16.png + Icons/branch_25.png Icons/cancel.png Icons/classify_16.png Icons/classify_25.png diff --git a/src/gui/RuleSetModel.cpp b/src/gui/RuleSetModel.cpp index 8afe3a6b0..d24a2fcd8 100644 --- a/src/gui/RuleSetModel.cpp +++ b/src/gui/RuleSetModel.cpp @@ -1190,16 +1190,6 @@ QStringList PolicyModel::getRuleOptions(Rule* r) const return res; } -QString PolicyModel::getRuleAction(Rule* r) const -{ - PolicyRule *policy_rule = PolicyRule::cast( r ); - NATRule *nat_rule = NATRule::cast( r ); - QString res; - if (policy_rule) res = policy_rule->getActionAsString().c_str(); - if (nat_rule) res = nat_rule->getActionAsString().c_str(); - return res; -} - void PolicyModel::initRule(Rule *new_rule, Rule *old_rule) { //if (fwbdebug) qDebug() << "PolicyModel::initRule"; @@ -1296,13 +1286,6 @@ QStringList NatModel::getRuleOptions(Rule* r) const return res; } -QString NatModel::getRuleAction(Rule* r) const -{ - NATRule *natRule = NATRule::cast( r ); - QString res = natRule->getActionAsString().c_str(); - return res; -} - void NatModel::initRule(Rule *new_rule, Rule *old_rule) { //if (fwbdebug) qDebug() << "NatModel::initRule"; diff --git a/src/gui/RuleSetModel.h b/src/gui/RuleSetModel.h index 40c2932b4..e4207ec3b 100644 --- a/src/gui/RuleSetModel.h +++ b/src/gui/RuleSetModel.h @@ -195,7 +195,6 @@ private: QVariant getRuleDataForDisplayRole(const QModelIndex &index, RuleNode* node) const; QString getRuleDirection(libfwbuilder::Rule* r) const; QStringList getRuleOptions(libfwbuilder::Rule* r) const; - QString getRuleAction(libfwbuilder::Rule* r) const; void configure(); }; @@ -216,7 +215,6 @@ private: QVariant getRuleDataForDisplayRole(const QModelIndex &index, RuleNode* node) const; QStringList getRuleOptions(libfwbuilder::Rule* r) const; - QString getRuleAction(libfwbuilder::Rule* r) const; void configure(); }; diff --git a/src/gui/RuleSetView.cpp b/src/gui/RuleSetView.cpp index 40e57fced..fabd730e2 100644 --- a/src/gui/RuleSetView.cpp +++ b/src/gui/RuleSetView.cpp @@ -364,16 +364,16 @@ void RuleSetView::addColumnRelatedMenu(QMenu *menu, const QModelIndex &index, { if (Resources::isTargetActionSupported(platform,"Translate")) { - action_name = getNatActionNameForPlatform(NATRule::Translate, - platform.c_str()); + action_name = getActionNameForPlatform( + f, NATRule::getActionAsString(NATRule::Translate)); menu->addAction( QIcon(LoadPixmap(":/Icons/Continue")), action_name, this, SLOT( changeActionToTranslate() )); } if (Resources::isTargetActionSupported(platform,"Branch")) { - action_name = getNatActionNameForPlatform(NATRule::Branch, - platform.c_str()); + action_name = getActionNameForPlatform( + f, NATRule::getActionAsString(NATRule::Branch)); menu->addAction( QIcon(LoadPixmap(":/Icons/Branch")), action_name, this, SLOT( changeActionToNATBranch() )); @@ -383,88 +383,88 @@ void RuleSetView::addColumnRelatedMenu(QMenu *menu, const QModelIndex &index, { if (Resources::isTargetActionSupported(platform,"Accept")) { - action_name = getActionNameForPlatform(PolicyRule::Accept, - platform.c_str()); + action_name = getActionNameForPlatform( + f, PolicyRule::getActionAsString(PolicyRule::Accept)); menu->addAction( QIcon(LoadPixmap(":/Icons/Accept")), action_name, this, SLOT( changeActionToAccept() )); } if (Resources::isTargetActionSupported(platform,"Deny")) { - action_name = getActionNameForPlatform(PolicyRule::Deny, - platform.c_str()); + action_name = getActionNameForPlatform( + f, PolicyRule::getActionAsString(PolicyRule::Deny)); menu->addAction( QIcon(LoadPixmap(":/Icons/Deny")), action_name, this, SLOT( changeActionToDeny() )); } if (Resources::isTargetActionSupported(platform,"Reject")) { - action_name = getActionNameForPlatform(PolicyRule::Reject, - platform.c_str()); + action_name = getActionNameForPlatform( + f, PolicyRule::getActionAsString(PolicyRule::Reject)); menu->addAction( QIcon(LoadPixmap(":/Icons/Reject")), action_name, this, SLOT( changeActionToReject() )); } if (Resources::isTargetActionSupported(platform,"Accounting")) { - action_name = getActionNameForPlatform(PolicyRule::Accounting, - platform.c_str()); + action_name = getActionNameForPlatform( + f, PolicyRule::getActionAsString(PolicyRule::Accounting)); menu->addAction( QIcon(LoadPixmap(":/Icons/Accounting")), action_name, this, SLOT( changeActionToAccounting() )); } if (Resources::isTargetActionSupported(platform,"Pipe")) { - action_name = getActionNameForPlatform(PolicyRule::Pipe, - platform.c_str()); + action_name = getActionNameForPlatform( + f, PolicyRule::getActionAsString(PolicyRule::Pipe)); menu->addAction( QIcon(LoadPixmap(":/Icons/Pipe")), action_name, this, SLOT( changeActionToPipe() )); } if (Resources::isTargetActionSupported(platform,"Tag")) { - action_name = getActionNameForPlatform(PolicyRule::Tag, - platform.c_str()); + action_name = getActionNameForPlatform( + f, PolicyRule::getActionAsString(PolicyRule::Tag)); menu->addAction( QIcon(LoadPixmap(":/Icons/Tag")), action_name, this, SLOT( changeActionToTag() )); } if (Resources::isTargetActionSupported(platform,"Classify")) { - action_name = getActionNameForPlatform(PolicyRule::Classify, - platform.c_str()); + action_name = getActionNameForPlatform( + f, PolicyRule::getActionAsString(PolicyRule::Classify)); menu->addAction( QIcon(LoadPixmap(":/Icons/Classify")), action_name, this, SLOT( changeActionToClassify() )); } if (Resources::isTargetActionSupported(platform,"Custom")) { - action_name = getActionNameForPlatform(PolicyRule::Custom, - platform.c_str()); + action_name = getActionNameForPlatform( + f, PolicyRule::getActionAsString(PolicyRule::Custom)); menu->addAction( QIcon(LoadPixmap(":/Icons/Custom")), action_name, this, SLOT( changeActionToCustom() )); } if (Resources::isTargetActionSupported(platform,"Branch")) { - action_name = getActionNameForPlatform(PolicyRule::Branch, - platform.c_str()); + action_name = getActionNameForPlatform( + f, PolicyRule::getActionAsString(PolicyRule::Branch)); menu->addAction( QIcon(LoadPixmap(":/Icons/Branch")), action_name, this, SLOT( changeActionToBranch() )); } if (Resources::isTargetActionSupported(platform,"Route")) { - action_name = getActionNameForPlatform(PolicyRule::Route, - platform.c_str()); + action_name = getActionNameForPlatform( + f, PolicyRule::getActionAsString(PolicyRule::Route)); menu->addAction( QIcon(LoadPixmap(":/Icons/Route")), action_name, this, SLOT( changeActionToRoute() )); } if (Resources::isTargetActionSupported(platform,"Continue")) { - action_name = getActionNameForPlatform(PolicyRule::Continue, - platform.c_str()); + action_name = getActionNameForPlatform( + f, PolicyRule::getActionAsString(PolicyRule::Continue)); menu->addAction( QIcon(LoadPixmap(":/Icons/Continue")), action_name, this, SLOT( changeActionToContinue() )); diff --git a/src/gui/platforms.cpp b/src/gui/platforms.cpp index 5b230ff0b..5b2eff4f9 100644 --- a/src/gui/platforms.cpp +++ b/src/gui/platforms.cpp @@ -653,6 +653,16 @@ QString getScreenName(QString s, const QStringList &sl) return res; } +QString getRuleAction(Rule *rule) +{ + PolicyRule *policy_rule = PolicyRule::cast(rule); + NATRule *nat_rule = NATRule::cast(rule); + string act; + if (policy_rule) act = policy_rule->getActionAsString(); + if (nat_rule) act = nat_rule->getActionAsString(); + return act.c_str(); +} + /* * will remap names of some actions to make it clear what commands or * configuration language keywords they will be translated to for the @@ -663,77 +673,26 @@ QString getScreenName(QString s, const QStringList &sl) * files and are not pulled using Rule::getActionAsString. */ -QString getActionNameForPlatform(PolicyRule::Action action, - const QString &platform) +QString getActionNameForPlatform(Firewall *fw, Rule *rule) { - QString action_name = ""; - switch (action) - { - case PolicyRule::Accept: action_name = QObject::tr("Accept"); break; - - case PolicyRule::Deny: action_name = QObject::tr("Deny"); break; - - case PolicyRule::Reject: action_name = QObject::tr("Reject"); break; - - case PolicyRule::Scrub: action_name = QObject::tr("Scrub"); break; - - case PolicyRule::Return: action_name = QObject::tr("Return"); break; - - case PolicyRule::Skip: action_name = QObject::tr("Skip"); break; - - case PolicyRule::Continue: action_name = QObject::tr("Continue"); break; - - case PolicyRule::Modify: action_name = QObject::tr("Modify"); break; - - case PolicyRule::Classify: action_name = QObject::tr("Classify"); break; - - case PolicyRule::Custom: action_name = QObject::tr("Custom"); break; - - case PolicyRule::Branch: - action_name = QObject::tr("Branch"); - if (platform=="iptables") action_name = QObject::tr("Chain"); - if (platform=="pf") action_name = QObject::tr("Anchor"); - break; - - case PolicyRule::Accounting: - action_name = QObject::tr("Accounting"); - if (platform=="ipf" || platform=="ipfw") action_name = QObject::tr("Count"); - break; - - case PolicyRule::Tag: - action_name = QObject::tr("Tag"); - if (platform=="iptables") action_name = QObject::tr("Mark"); - break; - - case PolicyRule::Pipe: - action_name = QObject::tr("Pipe"); - if (platform=="iptables") action_name = QObject::tr("Queue"); - break; - case PolicyRule::Route: - action_name = QObject::tr("Routing"); - break; - default: - ; - } - return action_name; + PolicyRule *policy_rule = PolicyRule::cast(rule); + NATRule *nat_rule = NATRule::cast(rule); + string act; + if (policy_rule) act = policy_rule->getActionAsString(); + if (nat_rule) act = nat_rule->getActionAsString(); + return getActionNameForPlatform(fw, act); } -QString getNatActionNameForPlatform(NATRule::NATAction action, - const QString &platform) +QString getActionNameForPlatform(Firewall *fw, const std::string &action) { - Q_UNUSED(platform); - QString action_name = ""; - switch (action) + string platform = fw->getStr("platform"); + string name; + try { - case NATRule::Translate: - action_name = QObject::tr("Translate"); - break; - - case NATRule::Branch: - action_name = QObject::tr("Branch"); - break; - } - return action_name; + name = Resources::getTargetCapabilityStr( + platform, "actions/" + action + "/description"); + } catch (FWException &ex) { } + return name.c_str(); } /* diff --git a/src/gui/platforms.h b/src/gui/platforms.h index 6a06b3c94..2a92f90d5 100644 --- a/src/gui/platforms.h +++ b/src/gui/platforms.h @@ -133,10 +133,13 @@ QStringList getScreenNames(const QStringList &sl); */ QString getScreenName(QString s,const QStringList &sl); -QString getActionNameForPlatform(libfwbuilder::PolicyRule::Action action, - const QString &platform); -QString getNatActionNameForPlatform(libfwbuilder::NATRule::NATAction action, - const QString &platform); +QString getRuleAction(libfwbuilder::Rule *rule); + +QString getActionNameForPlatform(libfwbuilder::Firewall *fw, + libfwbuilder::Rule *rule); + +QString getActionNameForPlatform(libfwbuilder::Firewall *fw, + const std::string &action); bool getStatelessFlagForAction(libfwbuilder::PolicyRule *rule); diff --git a/src/res/platform/fwsm.xml b/src/res/platform/fwsm.xml index f355f8dcb..35f1a23a2 100644 --- a/src/res/platform/fwsm.xml +++ b/src/res/platform/fwsm.xml @@ -137,51 +137,63 @@ nameif %in %il security%sl True - None + Accept + None True - None + Deny + None True - Reject + Reject + Reject True - None + Accounting + None False - None + Tag + None False - None + Pipe + None False - None + Classify + None False - None + Custom + None False - None + Branch + None False - None + Route + None True - None + Translate + None False - None + Branch + None diff --git a/src/res/platform/iosacl.xml b/src/res/platform/iosacl.xml index eff120387..c7306e468 100644 --- a/src/res/platform/iosacl.xml +++ b/src/res/platform/iosacl.xml @@ -60,51 +60,63 @@ interface %in True - None + Accept + None True - None + Deny + None False - Reject + Reject + Reject False - None + Accounting + None False - None + Tag + None False - None + Pipe + None False - None + Classify + None False - None + Custom + None False - None + Branch + None False - None + Route + None False - None + Translate + None False - None + Branch + None diff --git a/src/res/platform/ipf.xml b/src/res/platform/ipf.xml index e8ac6b4c1..d89174075 100644 --- a/src/res/platform/ipf.xml +++ b/src/res/platform/ipf.xml @@ -41,51 +41,63 @@ True - None + Accept + None True - None + Deny + None True - Reject + Reject + Reject True - None + Count + None False - None + Tag + None False - None + Pipe + None False - None + Classify + None True - CustomStr + Custom + CustomStr False - None + Branch + None True - RouteIPF + Route + RouteIPF True - None + Translate + None False - None + Branch + None diff --git a/src/res/platform/ipfw.xml b/src/res/platform/ipfw.xml index 60f4431c2..14d7c1374 100644 --- a/src/res/platform/ipfw.xml +++ b/src/res/platform/ipfw.xml @@ -39,51 +39,63 @@ True - None + Accept + None True - None + Deny + None True - Reject + Reject + Reject True - None + Count + None False - None + Tag + None True - PipeArgsIPFW + Pipe + PipeArgsIPFW True - ClassifyArgsIPFW + Classify + ClassifyArgsIPFW True - CustomStr + Custom + CustomStr False - None + Branch + None False - None + Route + None False - None + Translate + None False - None + Branch + None diff --git a/src/res/platform/iptables.xml b/src/res/platform/iptables.xml index 08cfd219b..6ebbeb043 100644 --- a/src/res/platform/iptables.xml +++ b/src/res/platform/iptables.xml @@ -50,55 +50,68 @@ True - None + Accept + None True - None + Deny + None True - Reject + Reject + Reject True - AccountingStr + Accounting + AccountingStr True - TagInt + Mark + TagInt True - None + Queue + None True - ClassifyStr + Classify + ClassifyStr True - CustomStr + Custom + CustomStr True - BranchChain + Chain + BranchChain True - RouteIPT + Routing + RouteIPT True - None + Continue + None True - None + Translate + None True - NATBranch + Branch + NATBranch diff --git a/src/res/platform/pf.xml b/src/res/platform/pf.xml index 9076c22c4..c6e8e8f66 100644 --- a/src/res/platform/pf.xml +++ b/src/res/platform/pf.xml @@ -44,51 +44,63 @@ True - None + Accept + None True - None + Deny + None True - Reject + Reject + Reject True - None + Accounting + None True - TagStr + Tag + TagStr False - None + Pipe + None True - ClassifyStr + Classify + ClassifyStr False - None + Custom + None True - BranchAnchor + Anchor + BranchAnchor True - RoutePF + Route + RoutePF True - None + Translate + None True - NATBranch + Branch + NATBranch diff --git a/src/res/platform/pix.xml b/src/res/platform/pix.xml index 54b71213f..8a4c51ee8 100644 --- a/src/res/platform/pix.xml +++ b/src/res/platform/pix.xml @@ -408,51 +408,63 @@ exit True - None + Accept + None True - None + Deny + None True - Reject + Reject + Reject True - None + Accounting + None False - None + Tag + None False - None + Pipe + None False - None + Classify + None False - None + Custom + None False - None + Branch + None False - None + Route + None True - None + Translate + None False - None + NATBranch + None diff --git a/src/res/platform/unknown.xml b/src/res/platform/unknown.xml index ae54e877b..7b72ae359 100644 --- a/src/res/platform/unknown.xml +++ b/src/res/platform/unknown.xml @@ -31,51 +31,63 @@ True - None + Accept + None True - None + Deny + None True - Reject + Reject + Reject True - None + Accounting + None False - None + Tag + None False - None + Pipe + None False - None + Classify + None False - None + Custom + None False - None + Branch + None False - None + Route + None False - None + Translate + None False - None + Branch + None