mirror of
https://github.com/fwbuilder/fwbuilder
synced 2025-06-15 14:47:52 +02:00
Add onlink option to routing compiler
"onlink" option needs to be added if gateway is not directly connected. This could be done automatically by looking at the IPs of all interfaces of the firewall, comparing them to the gateway's IP. Just don't know how to do this (yet).
This commit is contained in:
parent
b148847230
commit
a1f349e2b2
@ -281,6 +281,11 @@ string RoutingCompiler_ipt::PrintRule::RoutingRuleToString(RoutingRule *rule)
|
||||
}
|
||||
command_line << _printRGtw(rule);
|
||||
command_line << _printRItf(rule);
|
||||
{
|
||||
FWObject *opt_dummy = rule->getFirstByType(RoutingRuleOptions::TYPENAME);
|
||||
RoutingRuleOptions *opt = opt_dummy ? RoutingRuleOptions::cast(opt_dummy) : 0;
|
||||
if(opt && opt->getBool("use_onlink_option")) command_line << " onlink ";
|
||||
}
|
||||
|
||||
// to make generated script more readable in single rule compile mode,
|
||||
// skip the part that rolls back in case of an error
|
||||
|
@ -97,7 +97,8 @@ void RoutingRuleOptionsDialog::loadFWObject(FWObject *o)
|
||||
|
||||
if (platform=="iptables")
|
||||
{
|
||||
data.registerOption(m_dialog->routing_non_critical_rule, ropt, "no_fail");
|
||||
data.registerOption(m_dialog->routing_non_critical_rule, ropt, "no_fail");
|
||||
data.registerOption(m_dialog->routing_use_onlink_option, ropt, "use_onlink_option");
|
||||
}
|
||||
|
||||
init = true;
|
||||
|
@ -399,7 +399,7 @@ bool isDefaultRoutingRuleOptions(FWOptions *opt)
|
||||
|
||||
if (RoutingRuleOptions::isA(opt))
|
||||
{
|
||||
res= ( ! opt->getBool("no_fail") );
|
||||
res= ( ! opt->getBool("no_fail") && ! opt->getBool("use_onlink_option") );
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
@ -1,74 +1,93 @@
|
||||
<ui version="4.0" >
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>RoutingRuleOptionsDialog_q</class>
|
||||
<widget class="QWidget" name="RoutingRuleOptionsDialog_q" >
|
||||
<property name="geometry" >
|
||||
<widget class="QWidget" name="RoutingRuleOptionsDialog_q">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>562</width>
|
||||
<width>834</width>
|
||||
<height>161</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle" >
|
||||
<property name="windowTitle">
|
||||
<string>Routing Rule Options</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout" >
|
||||
<item row="0" column="0" >
|
||||
<widget class="QStackedWidget" name="wStack" >
|
||||
<property name="sizePolicy" >
|
||||
<sizepolicy vsizetype="Minimum" hsizetype="Preferred" >
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QStackedWidget" name="wStack">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="frameShape" >
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="frameShadow" >
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Sunken</enum>
|
||||
</property>
|
||||
<property name="currentIndex" >
|
||||
<number>1</number>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="page0" >
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<widget class="QWidget" name="page0">
|
||||
<layout class="QGridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<property name="topMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QFrame" name="frame1" >
|
||||
<property name="frameShape" >
|
||||
<property name="rightMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QFrame" name="frame1">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow" >
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<layout class="QGridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<property name="topMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<item row="2" column="0" colspan="3" >
|
||||
<widget class="QCheckBox" name="routing_non_critical_rule" >
|
||||
<property name="text" >
|
||||
<property name="rightMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<item row="2" column="0" colspan="3">
|
||||
<widget class="QCheckBox" name="routing_non_critical_rule">
|
||||
<property name="text">
|
||||
<string>If installation of this routing rule fails, just carry on</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" >
|
||||
<item row="5" column="0">
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType" >
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::MinimumExpanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0" >
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>0</height>
|
||||
@ -76,53 +95,81 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QCheckBox" name="routing_use_onlink_option">
|
||||
<property name="text">
|
||||
<string>onlink: pretend that the nexthop is directly attached to this link, even if it does not match any interface prefix</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="page1" >
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<widget class="QWidget" name="page1">
|
||||
<layout class="QGridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<property name="topMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QFrame" name="frame2" >
|
||||
<property name="frameShape" >
|
||||
<property name="rightMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QFrame" name="frame2">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow" >
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<layout class="QGridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<property name="topMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="2" column="0" colspan="3" >
|
||||
<widget class="QLabel" name="hint_no_go" >
|
||||
<property name="text" >
|
||||
<property name="rightMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="2" column="0" colspan="3">
|
||||
<widget class="QLabel" name="hint_no_go">
|
||||
<property name="text">
|
||||
<string>No options available for routing rules of this firewall platform</string>
|
||||
</property>
|
||||
<property name="wordWrap" >
|
||||
<property name="wordWrap">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" >
|
||||
<item row="5" column="0">
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType" >
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0" >
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>50</height>
|
||||
@ -139,7 +186,7 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<layoutdefault spacing="2" margin="2" />
|
||||
<layoutdefault spacing="2" margin="2"/>
|
||||
<tabstops>
|
||||
<tabstop>routing_non_critical_rule</tabstop>
|
||||
</tabstops>
|
||||
@ -151,11 +198,11 @@
|
||||
<receiver>RoutingRuleOptionsDialog_q</receiver>
|
||||
<slot>changed()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel" >
|
||||
<hint type="sourcelabel">
|
||||
<x>20</x>
|
||||
<y>20</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel" >
|
||||
<hint type="destinationlabel">
|
||||
<x>20</x>
|
||||
<y>20</y>
|
||||
</hint>
|
||||
|
Loading…
x
Reference in New Issue
Block a user