Author: mzugec
Date: Fri Jul 25 16:20:14 2008
New Revision: 49420
URL: http://svn.opensuse.org/viewcvs/yast?rev=49420&view=rev
Log:
initial support for TUN/TAP (FaTE#302184)
Modified:
trunk/network/VERSION
trunk/network/package/yast2-network.changes
trunk/network/src/lan/address.ycp
trunk/network/src/lan/bridge.ycp
trunk/network/src/lan/hardware.ycp
trunk/network/src/modules/LanItems.ycp
trunk/network/src/routines/widgets.ycp
Modified: trunk/network/VERSION
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/VERSION?rev=49420&r1=49419&r2=49420&view=diff
==============================================================================
--- trunk/network/VERSION (original)
+++ trunk/network/VERSION Fri Jul 25 16:20:14 2008
@@ -1 +1 @@
-2.17.11
+2.17.12
Modified: trunk/network/package/yast2-network.changes
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/package/yast2-network.changes?rev=49420&r1=49419&r2=49420&view=diff
==============================================================================
--- trunk/network/package/yast2-network.changes (original)
+++ trunk/network/package/yast2-network.changes Fri Jul 25 16:20:14 2008
@@ -1,4 +1,10 @@
-------------------------------------------------------------------
+Fri Jul 25 16:19:08 CEST 2008 - mzugec@suse.cz
+
+- initial support for TUN/TAP (FaTE#302184)
+- 2.17.12
+
+-------------------------------------------------------------------
Wed Jul 23 15:17:46 CEST 2008 - mzugec@suse.cz
- convert eth-id-xx.. device names in AY profile into ethx and udev
Modified: trunk/network/src/lan/address.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/lan/address.ycp?rev=49420&r1=49419&r2=49420&view=diff
==============================================================================
--- trunk/network/src/lan/address.ycp (original)
+++ trunk/network/src/lan/address.ycp Fri Jul 25 16:20:14 2008
@@ -111,7 +111,7 @@
*/
void StoreBridge(string key, map event)
{
- settings["BRIDGE_PORTS"] = mergestring((list<string>)UI::QueryWidget (`id("BRIDGE_PORTS"), `SelectedItems), " ");
+ settings["BRIDGE_PORTS"] = String::CutBlanks( mergestring((list<string>)UI::QueryWidget (`id("BRIDGE_PORTS"), `SelectedItems), " ") );
y2milestone("store bridge %1 : %2", key, settings["BRIDGE_PORTS"]:"");
}
@@ -177,6 +177,20 @@
settings["SLAVES"] = (list<string>)UI::QueryWidget (`id(key), `SelectedItems);
}
+
+void initTunnel(string key){
+y2internal("initTunnel %1", settings);
+ UI::ChangeWidget(`persistent, `Value, settings["TUNNEL_SET_PERSISTENT"]:""=="yes");
+ UI::ChangeWidget(`owner, `Value, settings["TUNNEL_SET_OWNER"]:"");
+ UI::ChangeWidget(`group, `Value, settings["TUNNEL_SET_GROUP"]:"");
+}
+
+void storeTunnel(string key, map event){
+ settings["TUNNEL_SET_PERSISTENT"]=((boolean)UI::QueryWidget(`persistent, `Value)) ? "yes" : "no";
+ settings["TUNNEL_SET_OWNER"] = (string)UI::QueryWidget(`owner, `Value);
+ settings["TUNNEL_SET_GROUP"] = (string)UI::QueryWidget(`group, `Value);
+}
+
void enableDisableBootProto(symbol current){
UI::ChangeWidget(`dyn, `Enabled, current==`dynamic);
UI::ChangeWidget(`ipaddr, `Enabled, current==`static);
@@ -531,7 +545,20 @@
// "valid_chars": NetworkInterfaces::ValidCharsIfcfg (),
// "handle": HandleIfcfg,
],
-
+ "TUNNEL" : $[
+ "widget" : `custom,
+ "custom_widget":
+ `VBox(
+ `Left(`CheckBox(`id(`persistent), _("Persistent Tunnel"))),
+ `HBox(
+ `InputField(`id(`owner), _("Tunnel owner")),
+ `InputField(`id(`group), _("Tunnel group"))
+ )
+ ),
+ "help" : help["tunnel"]:"",
+ "init" : initTunnel,
+ "store" : storeTunnel,
+ ],
"BRIDGE_PORTS": $[
"widget": `multi_selection_box,
"label": _("Bridged Devices"),
@@ -589,11 +616,11 @@
// TODO : Stat ... Assigned
`Left(`RadioButton(`id(`static), `opt(`notify), _("Statically assigned IP Address"))),
`HBox(
- `TextEntry(`id(`ipaddr), _("&IP Address")),
+ `InputField(`id(`ipaddr), _("&IP Address")),
`HSpacing(1),
- `TextEntry(`id(`netmask), _("&Subnet Mask")),
+ `InputField(`id(`netmask), _("&Subnet Mask")),
`HSpacing(1),
- `TextEntry(`id(`hostname), _("&Hostname")),
+ `InputField(`id(`hostname), _("&Hostname")),
`HStretch()
)
)
@@ -701,6 +728,16 @@
"IFCFGTYPE": LanItems::type,
"IFCFGID": LanItems::device,
];
+ if (contains(["tun", "tap"], LanItems::type))
+ {
+ settings = $[
+ "BOOTPROTO": "static",
+ "TUNNEL" : LanItems::type,
+ "TUNNEL_SET_PERSISTENT" : LanItems::tunnel_set_persistent ? "yes" : "no",
+ "TUNNEL_SET_OWNER" : LanItems::tunnel_set_owner,
+ "TUNNEL_SET_GROUP" : LanItems::tunnel_set_group
+ ];
+ }
string drvtype = DriverType (settings["IFCFGTYPE"]:"");
@@ -717,10 +754,10 @@
}
// FIXME duplicated in hardware.ycp
- list<string> device_types = [ "arc", "bnep", "dummy", "eth", "fddi", "myri", "tr", "usb", "wlan", "bond", "vlan", "br" ];
+ list<string> device_types = [ "arc", "bnep", "dummy", "eth", "fddi", "myri", "tr", "usb", "wlan", "bond", "vlan", "br", "tun", "tap" ];
if(Arch::s390 ())
- device_types = [ "eth", "tr", "hsi", "ctc", "escon", "ficon", "iucv", "qeth", "lcs", "vlan", "br" ];
+ device_types = [ "eth", "tr", "hsi", "ctc", "escon", "ficon", "iucv", "qeth", "lcs", "vlan", "br", "tun", "tap" ];
if(Arch::ia64 ())
device_types = add(device_types, "xp");
@@ -863,10 +900,17 @@
`Left(label),
just_address_contents,
`Frame("", `VBox("BRIDGE_PORTS")),
-// "AD_ADDRESSES",
frame2
);
}
+ else if (contains(["tun", "tap"], LanItems::type))
+ {
+ address_contents = `VBox(
+ `Left(label),
+ "TUNNEL",
+ frame2
+ );
+ }
map functions = $[
@@ -875,6 +919,8 @@
`abort : LanItems::Rollback,
];
+ if (contains(["tun", "tap"], LanItems::type)) functions=$[ `abort:LanItems::Rollback ];
+
map wd_content = $[
@@ -929,6 +975,7 @@
"fallback_functions" : functions,
];
if (contains(["vlan", "br"], LanItems::type)) wd_content["tab_order"]= ["t_general", "t_addr"];
+ if (contains(["tun", "tap"], LanItems::type)) wd_content["tab_order"]= ["t_addr"];
hw_standalone=false;
@@ -960,7 +1007,6 @@
if (ret != `back && ret != `abort)
{
string ifcfgname = LanItems::Items[LanItems::current, "ifcfg"]:"";//settings["IFCFGID"]:"";
-
// general tab
LanItems::startmode = settings["STARTMODE"]:"";
LanItems::usercontrol = settings["USERCONTROL"]:false;
@@ -1023,7 +1069,11 @@
LanItems::vlan_etherdevice = settings["ETHERDEVICE"]:"";
} else if (LanItems::type == "br"){
LanItems::bridge_ports = settings["BRIDGE_PORTS"]:"";
- }
+ } else if (contains(["tun", "tap"], LanItems::type)){
+ LanItems::tunnel_set_persistent = (settings["TUNNEL_SET_PERSISTENT"]:"" == "yes");
+ LanItems::tunnel_set_owner = settings["TUNNEL_SET_OWNER"]:"";
+ LanItems::tunnel_set_group = settings["TUNNEL_SET_GROUP"]:"";
+ }
Modified: trunk/network/src/lan/bridge.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/lan/bridge.ycp?rev=49420&r1=49419&r2=49420&view=diff
==============================================================================
--- trunk/network/src/lan/bridge.ycp (original)
+++ trunk/network/src/lan/bridge.ycp Fri Jul 25 16:20:14 2008
@@ -18,28 +18,31 @@
{
string old_name=NetworkInterfaces::Name;
// old values (preselected values)
- list<string> br_ports = splitstring(NetworkInterfaces::Current["BRIDGE_PORTS"]:"", " ");
+ list<string> br_ports = splitstring( NetworkInterfaces::Current["BRIDGE_PORTS"]:"" , " ");
list items = createUnconfigured(br_ports);
// from all configured netcards filter 0.0.0.0 configurations
map configurations = NetworkInterfaces::FilterDevices("netcard");
foreach(string devtype, splitstring(NetworkInterfaces::CardRegex["netcard"]:"", "|"), {
if (contains(["br", "vlan"], devtype)) continue;
+ if (contains(["tun", "tap"], devtype)) {
foreach(string devname, (list<string>) Map::Keys(configurations[devtype]:$[]), {
-
- //filter the eth devices (IPADDR=0.0.0.0 - promiscuited mode)
-// if ((string)configurations[devtype, devname, "IPADDR"]:"" == "0.0.0.0") comment="";
-// {
-string description = sformat("%1%2", NetworkInterfaces::GetValue(devname, "NAME"), ((string)configurations[devtype, devname, "IPADDR"]:"" != "0.0.0.0") ? sformat(" (%1)", "configuration") : "");
+ string description = NetworkInterfaces::GetDevTypeDescription(devtype, true);
+ items = add (items, `item(`id(devname), sformat("%1 - %2",devname, description), contains(br_ports, devname)) );
+ });
+ continue;
+ }
+ foreach(string devname, (list<string>) Map::Keys(configurations[devtype]:$[]), {
+ string description = sformat("%1%2", NetworkInterfaces::GetValue(devname, "NAME"),
+ ((string)configurations[devtype, devname, "IPADDR"]:"" != "0.0.0.0") ? sformat(" (%1)", "configuration") : "");
items = add (items, `item(`id(devname), sformat("%1 - %2",devname, description), contains(br_ports, devname)) );
-// }
});
});
-
NetworkInterfaces::Select(old_name);
UI::ChangeWidget(`id(key), `Items, items);
}
boolean ValidateBridge (string key, map event) {
+ string old_name=NetworkInterfaces::Name;
boolean valid=true;
boolean confirmed=false;
list<term> items = (list<term>)UI::QueryWidget(`id(key), `Items);
@@ -53,6 +56,7 @@
string device = t[0, 0]:"";
if (contains(sel, device) && hasAnyValue(device)) {
if (contains(confs, device)){
+ if (contains(["tun", "tap"], NetworkInterfaces::GetType(device))) continue;
if ((string)configurations[NetworkInterfaces::GetType(device), device, "IPADDR"]:"" != "0.0.0.0") {
if(!confirmed) {
valid = Popup::ContinueCancel(_("At least one selected device is already configured.
@@ -73,6 +77,7 @@
}
}
});
+ NetworkInterfaces::Select(old_name);
return valid;
}
Modified: trunk/network/src/lan/hardware.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/lan/hardware.ycp?rev=49420&r1=49419&r2=49420&view=diff
==============================================================================
--- trunk/network/src/lan/hardware.ycp (original)
+++ trunk/network/src/lan/hardware.ycp Fri Jul 25 16:20:14 2008
@@ -407,7 +407,7 @@
UI::ChangeWidget(`id(`modul), `Value, hardware["modul"]:"");
UI::ChangeWidget(`id(`options), `Value, hardware["options"]:"");
}
- else if (contains(["bond", "vlan", "br"], hardware["type"]:""))
+ else if (contains(["bond", "vlan", "br", "tun", "tap"], hardware["type"]:""))
{
UI::ChangeWidget(`id(`hwcfg), `Enabled, false);
UI::ChangeWidget(`id(`modul), `Enabled, false);
Modified: trunk/network/src/modules/LanItems.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/modules/LanItems.ycp?rev=49420&r1=49419&r2=49420&view=diff
==============================================================================
--- trunk/network/src/modules/LanItems.ycp (original)
+++ trunk/network/src/modules/LanItems.ycp Fri Jul 25 16:20:14 2008
@@ -133,6 +133,13 @@
/* aliases */
global map aliases = $[];
+
+/* for TUN / TAP devices */
+global boolean tunnel_set_persistent=true;
+global string tunnel_set_owner="";
+global string tunnel_set_group="";
+
+
/* propose options */
global boolean proposal_valid = false;
global boolean nm_proposal_valid = false;
@@ -1006,6 +1013,7 @@
* @return true if success
*/
global define boolean Commit() {
+y2internal("name %1, current %2", NetworkInterfaces::Name, NetworkInterfaces::Current);
if(operation == `add || operation == `edit) {
map newdev = $[];
@@ -1192,6 +1200,15 @@
newdev["_aliases"] = aliases;
y2milestone("aliases %1", aliases);
}
+ if (contains(["tun", "tap"], type)){
+ newdev=$[
+ "BOOTPROTO" : "static",
+ "TUNNEL" : type,
+ "TUNNEL_SET_PERSISTENT" : tunnel_set_persistent ? "yes" : "no",
+ "TUNNEL_SET_OWNER" : tunnel_set_owner,
+ "TUNNEL_SET_GROUP" : tunnel_set_group
+ ];
+ }
NetworkInterfaces::Name = Items[current, "ifcfg"]:"";
NetworkInterfaces::Current = newdev;
if (!NetworkInterfaces::Commit()) Items[current, "ifcfg"]="";
Modified: trunk/network/src/routines/widgets.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/routines/widgets.ycp?rev=49420&r1=49419&r2=49420&view=diff
==============================================================================
--- trunk/network/src/routines/widgets.ycp (original)
+++ trunk/network/src/routines/widgets.ycp Fri Jul 25 16:20:14 2008
@@ -275,6 +275,7 @@
define list createUnconfigured(list<string> match){
list items=[];
+ integer current = LanItems::current;
foreach(integer row, any value, LanItems::Items,{
LanItems::current = row;
if (!LanItems::IsItemConfigured()){
@@ -283,6 +284,7 @@
if (hasAnyValue(dev_name)) items = add(items, `item(`id(dev_name), sformat("%1 - %2", dev_name, description), contains(match, dev_name)?true:false));
}
});
+ LanItems::current = current;
return items;
}
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org