<?xml version="1.0" encoding="utf-16"?>
<!-- signature=1075587412147226297029818048634192873512 -->
<!-- created by: Global IP Telecommunications, April 01, 2006 -->


<device_definitions>
	<!-- debug element: a leading NO_ switches debug messages off -->
	<debug>NO_debug_device_definitions | NO_debug_read_device_definitions | NO_debug_device_events 
		| NO_debug_lan_discovery | NO_debug_spider | NO_debug_readout_of_settings | NO_debug_applying_of_settings
		| NO_debug_remoting_client | NO_debug_ras_functions | NO_debug_computation_of_settings</debug>
	<debug>debug_device_definitions | debug_read_device_definitions | debug_device_events
		| debug_lan_discovery | debug_spider | debug_readout_of_settings | debug_applying_of_settings
		| debug_remoting_client | debug_ras_functions | debug_computation_of_settings</debug>

	<!-- The following device will always be found -->
	<device>
		<device_id>Host computer</device_id>
		<globals>
			<lan_device>
				<english>Host computer</english>
				<german>Hostrechner</german>
				<french>Cet ordinateur</french>
				<show_minimized>false</show_minimized>
			</lan_device>

			<header_label>
				// strings can be pretty long here (3 lines with automatic line break)
				<english>This host computer</english>
				<german>Dieser Hostcomputer</german>
				<french>Cet ordinateur d'hôte</french>
			</header_label>
			<use_device_chkbox>
				<english>Use device</english>
				<german>Gerät verwenden</german>
				<french>Utiliser l'appareil</french>
					// use_device_chkbox: can be true, false or disabled. If disabled, the control appears in the checked state, but does not accept inputs
				<default_value>disabled</default_value>
			</use_device_chkbox>

			<username_label>
				<english>User name</english>
				<german>Benutzername</german>
				<french>Nom d'utilisateur</french>
				<default_value>admin</default_value>
					// credentials_mode: disable: username and password are not applicable
				<credentials_mode>disable</credentials_mode>
			</username_label>
			<password_label>
				<english>Password</english>
				<german>Passwort</german>
				<french>Nom d'utilisateur</french>
				<default_value>password</default_value>
			</password_label>
			
			<IP_addr_label>
				<english>IP address</english>
				<german>IP Adresse</german>
				<french>Adresse IP</french>
				<example>
					[page:],[name:],[LANbot_control:IP_address_textBox],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:lanbot.helper_class.Write]
					<code>
					<!--
					using System;
					using System.Data;
					using System.Collections;
					using System.IO;
					using System.Windows.Forms;
					using System.Xml;
					using LanbotUtilities;
					using LanbotUtilities.Spider;

					namespace lanbot
					{
						public class helper_class : lanbot.Commands
						{
							public helper_class()
							{
							}

							public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								return 0;
							}
							public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								string						s;
								
								s=Cglobals.NetworkAdapters.AvailableIPAddressesPerAdapter[Cglobals.NetworkAdapters.SelectedNetworkAdapter][0];
								if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0) 
									Cglobals.dbg_frm.debugprint(System.String.Format("RUNTIME COMPILED CODE: IP address of host computer=\"{0}\"",s));

									// save the data in the control now
								dt.Rows[1][index_in_table]=s;

								return (int)ERROR.NO_ERROR;
							}
							public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								return 0;
							}
							public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								int							res=(int)ERROR.NO_ERROR;
								string						MACAddress,IP_address,subnet_mask,standard_gateway;
								
								MACAddress=Cglobals.NetworkAdapters.MACAddress[Cglobals.NetworkAdapters.SelectedNetworkAdapter];
								IP_address=(string)dt.Rows[1]["IP_address_textBox"];
								subnet_mask=(string)dt.Rows[1]["subnet_mask_textBox"];
								standard_gateway=(string)dt.Rows[1]["standard_gateway_textBox"];

								if ((Cglobals.debug_mode & Cglobals.debug_applying_of_settings)>0) 
									Cglobals.dbg_frm.debugprint(System.String.Format("RUNTIME COMPILED CODE: setting of IP address of host computer (MAC=) to \"{1}\", subnet mask to \"{2}\" and standard gateway to \"{3}\"",MACAddress,IP_address,subnet_mask,standard_gateway));

								res=LanbotUtilities.LanbotWMI.SetIP(MACAddress,IP_address,subnet_mask,standard_gateway);
								if (res!=(int)ERROR.NO_ERROR)
								{
									if ((Cglobals.debug_mode & Cglobals.debug_applying_of_settings)>0) 
										Cglobals.dbg_frm.debugprint(System.String.Format("RUNTIME COMPILED CODE: LanbotUtilities.LanbotWMI.SetIP(..) was not successfully executed"));
								}
								return res;
							}
						}
					}
					-->
					</code>
				</example>
			</IP_addr_label>
			<subnet_mask_label>
				<english>Subnet mask</english>
				<german>Subnetzmaske</german>
				<french>Masque subnet</french>
				<example>
					[page:],[name:],[LANbot_control:subnet_mask_textBox],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:value]
					<code>
					<!--
					using System;
					using System.Data;
					using System.Collections;
					using System.IO;
					using System.Windows.Forms;
					using System.Xml;
					using LanbotUtilities;
					using LanbotUtilities.Spider;

					namespace lanbot
					{
						public class helper_class : lanbot.Commands
						{
							public helper_class()
							{
							}

							public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								return 0;
							}
							public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								string						s;
								
								s=Cglobals.NetworkAdapters.IP_subnet_mask_Strings[Cglobals.NetworkAdapters.SelectedNetworkAdapter][0];
								if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0) 
									Cglobals.dbg_frm.debugprint(System.String.Format("RUNTIME COMPILED CODE: Subnet mask of host computer=\"{0}\"",s));

									// save the data in the control now
								dt.Rows[1][index_in_table]=s;

								return (int)ERROR.NO_ERROR;
							}
							public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								return 0;
							}
							public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								// not necessary to set anything here because this has already been done during writing back of settings for IP_addr_label
								return 0;
							}
						}
					}
					-->
					</code>
				</example>
			</subnet_mask_label>
			<standard_gateway_label>
				<english>Standard gateway</english>
				<german>Standardgateway</german>
				<french>Passerelle standard</french>
				<default_value>disabled</default_value>
				<example>
					[page:],[name:],[LANbot_control:standard_gateway_textBox],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:value]
					<code>
					<!--
					using System;
					using System.Data;
					using System.Collections;
					using System.IO;
					using System.Windows.Forms;
					using System.Xml;
					using LanbotUtilities;
					using LanbotUtilities.Spider;

					namespace lanbot
					{
						public class helper_class : lanbot.Commands
						{
							public helper_class()
							{
							}

							public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								return 0;
							}
							public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								string						s;
								
								s=Cglobals.NetworkAdapters.DefaultIPGateways[Cglobals.NetworkAdapters.SelectedNetworkAdapter][0];
								if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0) 
									Cglobals.dbg_frm.debugprint(System.String.Format("RUNTIME COMPILED CODE: Subnet mask of host computer=\"{0}\"",s));

									// save the data in the control now
								dt.Rows[1][index_in_table]=s;

								return (int)ERROR.NO_ERROR;
							}
							public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								return 0;
							}
							public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								// not necessary to set anything here because this has already been done during writing back of settings for IP_addr_label
								return 0;
							}
						}
					}
					-->
					</code>
				</example>
			</standard_gateway_label>


			<picture>Qk02FAAAAAAAADYEAAAoAAAAQAAAAEAAAAABAAgAAAAAAAAAAAASCwAAEgsAAAABAAAAAQAAAAAA
/wEBAf8CAgL/AwMD/wQEBP8FBQX/BgYG/wcHB/8ICAj/CQkJ/woKCv8LCwv/DAwM/w0NDf8ODg7/
Dw8P/xAQEP8RERH/EhIS/xMTE/8UFBT/FRUV/xYWFv8XFxf/GBgY/xkZGf8aGhr/Gxsb/xwcHP8d
HR3/Hh4e/x8fH/8gICD/ISEh/yIiIv8jIyP/JCQk/yUlJf8mJib/Jycn/ygoKP8pKSn/Kioq/ysr
K/8sLCz/LS0t/y4uLv8vLy//MDAw/zExMf8yMjL/MzMz/zQ0NP81NTX/NjY2/zc3N/84ODj/OTk5
/zo6Ov87Ozv/PDw8/z09Pf8+Pj7/Pz8//0BAQP9BQUH/QkJC/0NDQ/9ERET/RUVF/0ZGRv9HR0f/
SEhI/0lJSf9KSkr/S0tL/0xMTP9NTU3/Tk5O/09PT/9QUFD/UVFR/1JSUv9TU1P/VFRU/1VVVf9W
Vlb/V1dX/1hYWP9ZWVn/Wlpa/1tbW/9cXFz/XV1d/15eXv9fX1//YGBg/2FhYf9iYmL/Y2Nj/2Rk
ZP9lZWX/ZmZm/2dnZ/9oaGj/aWlp/2pqav9ra2v/bGxs/21tbf9ubm7/b29v/3BwcP9xcXH/cnJy
/3Nzc/90dHT/dXV1/3Z2dv93d3f/eHh4/3l5ef96enr/e3t7/3x8fP99fX3/fn5+/39/f/+AgID/
gYGB/4KCgv+Dg4P/hISE/4WFhf+Ghob/h4eH/4iIiP+JiYn/ioqK/4uLi/+MjIz/jY2N/46Ojv+P
j4//kJCQ/5GRkf+SkpL/k5OT/5SUlP+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv+bm5v/nJyc/52d
nf+enp7/n5+f/6CgoP+hoaH/oqKi/6Ojo/+kpKT/paWl/6ampv+np6f/qKio/6mpqf+qqqr/q6ur
/6ysrP+tra3/rq6u/6+vr/+wsLD/sbGx/7Kysv+zs7P/tLS0/7W1tf+2trb/t7e3/7i4uP+5ubn/
urq6/7u7u/+8vLz/vb29/76+vv+/v7//wMDA/8HBwf/CwsL/w8PD/8TExP/FxcX/xsbG/8fHx//I
yMj/ycnJ/8rKyv/Ly8v/zMzM/83Nzf/Ozs7/z8/P/9DQ0P/R0dH/0tLS/9PT0//U1NT/1dXV/9bW
1v/X19f/2NjY/9nZ2f/a2tr/29vb/9zc3P/d3d3/3t7e/9/f3//g4OD/4eHh/+Li4v/j4+P/5OTk
/+Xl5f/m5ub/5+fn/+jo6P/p6en/6urq/+vr6//s7Oz/7e3t/+7u7v/v7+//8PDw//Hx8f/y8vL/
8/Pz//T09P/19fX/9vb2//f39//4+Pj/+fn5//r6+v/7+/v//Pz8//39/f/+/v7/////////////
9vHr6+rp6ejm5ubl4uHd2NbV0tHPzczLysjGxMPDwcHEx8nLzMzNzcvLzMzNzM3Oz9LV4eXs9v//
//////////LhvKWcl5WRjouIhoZ6al9aWFRSUU1MSUdGRkdDQkdMSE9XW11eXl5cXF1bW11fYWFj
ZYaVtez////////////0vFhKOzo5ODg3NjhLR0M4MDQxNjUxLy4xMjMzLCtCT0NFQ0RDQ0NCQkFC
NS4wMTEyMTI9RVzf////////////8opUTEJDRUZGRkVJVlZSUlNVUkJATFdXV1ZVUk1RWltbXlta
WllWVlNSU0o/Pz08Ozs6PEVR0P///////////+2/xsfJycvO0tbX2drb3ubn5deMgrzs5efmz9TV
1N7m6+no5ebl4+Hm4dzZ1dHNy8jGwr65rdr////////////uxtzi4+Pk5OXm5uXm5ubJxujo5Obo
6Onp5ubp6uvr6+vr6+rp6+3nus/x7u/w7u/t7Ovp6N3n////////////9LCosK6ur6+vsbGwsrOz
rKqztri4vcW8xcnFyMO9vLy8vLy8uru7uq6yuru8u7q6u7m4uLm35/////////////m8m6empqWm
pqmqqqmqqqyurKystMK5jqSnjKzHv7SysrOysrKzsrGysbCwsa6vrJ+epLCutO3////////////7
yJmmpqamp6enqKmpqqqqqqymtLy9wM7RyLa2uLe3rK6zsbKysrGxsrCxsbCwsKSSnaWvrMD0////
////////+NWXpKalpaWmpqanp6eoqK2Na3R4e3+AgHqAeHNubmiFsq+wsK+ur6+urq+tra6nmp2q
rqnO+f////////////fjl6KkpKWmqKenqKioqqugaGBcU01OTU1PTU5OT15jZJixsrKysrKxsLCv
r66srK6tq6qr2fr////////////376GcpJ2bmJWVlZOSkY+GbGFjX1VPUlJSU1FRUE9cY2RofYqO
jo+SkpSUlpiZmpucn6mrrOL4////////////9/a2lnxjY2NiZGRkY2JhX2JlZGBYUFFSU1JSUlFQ
W2RlZGNiYWJkZWVlZWZnZ2hnZ2Zwm7Ls+P////////////b4x41hW1lcW11dXlxdXV1eXFxcWFVV
VlVWWFZVWlldX11eYF5gYmBiYmJjY2JjYWBhXoa+8Pj////////////29tWLXU5eZFdNZWRRWmde
UGBlaF1dXF1cXWdmYE1iX05iXVFoYFFrYVppXVtpWFplVFWCzPb4////////////9vTjiFxQZF1X
UGNfVFxkX01eYmBjZGBjY2JjY2BQZ2BUaF5UamFUaV9YbVZedFBYaVNVgNj5+P////////////Ty
65JbTlpnXV1RWGFUXF9QX15SYV5TYlxVZFZYblVcZ1dgZ1RgZFBrcWVOXGlLXmRVWILg9/j/////
///////08PGrWFFXY15PVmJQW2NTYF9TY1tWZVdWZFNaZlVgYE9iYFFjWFVjWmBlYmNgUWNiWFyL
6/f4////////////8e/yvV5VUGpeTmdZUmdQWm5TYWdSZmZSaVpSaFNZbVFeZU9fXE5kV1JnW2Be
WlJnZFhfmfP2+P////////////Px89FsWFVkUVtkUGBlT2RhV2VaW2NdXWFaZWdiZF9laGBjaWFh
X2BjYGFlZWBWbGRUX7H29vj////////////z8vPkd1lMQFpfTmNhVWRbUmpUW2tLYWVKaV5UclJV
aVJea1BbZExqX05xbGVYVmtTUmTI9fL2////////////8e/v7JJPTV9eUllcV2RYY1dfX1tuUmRi
XmtYaVxnZVtxXHpnYn1ZXHxafmVwb2V3WE592vHx8////////////+7u7fKzY1hYVl50bl1bX11X
WVVXV1lYV1pYXFpZXl5hY3RiaHBcbm9jZ2Vqa2phYmRomuTw7/D////////////s7ezxv21mVGd+
g4F4eHdyT0xKQUZJR0ZHSEVFRURCQEJNREhRRk5gZmhrb3B0cllndJjq7+7v////////////7evq
87hQUU2N2s3Ny8jKvlJMTk1LTUxMS0xLS0tKSEhJSUpKS0xIhLKvrq2tr6hUR0Rh5O7u7v//////
/////+vr6vWfTWdifqyoqKinp6BlWFhXV1dVVlVVVFJRUU9PT1BQT09PTHGTj42KiYmCUUdHWNrw
7u/////////////r6uv1mEZoY1xTUE9OTEpKTUtLS0tKTEtKSkpKSUZHRUVFRUREREVCP0A+PTw6
OkJERVjW8+7v////////////6uvp85dFT0xKSEVFQ0FCQUBBPz8/Pz8/PT4+PT08OTk6OTk5ODc1
NjY1NTQ0NDQ1NT9X1vLt7v///////////+np6vOUQy8uLSsqKSgoKCcmJiQkJCQjIiEhICEgHx8f
Hx4eHx4eHR0eHR0eHh8fISAwW9Xy7e/////////////q6urzkUUyMTEwLi4tKywrKikpKCgoJycm
JiYmJSMkJCQiIyMjIyMjIiIiIiIiIyUkMVrR8+3w////////////6+vr8YtFMjExMC8vLSwsKyop
KSgpKCcnJyYmJiUlJCQkIyMjIyMjIiIjIyIhIyQkIzJb0PTv7////////////+rr6++HRzIxMTAv
Li0tLCsqKikpKCgnJycmJiYlJSUkJCQjIyMiIiIiIiEiIiMkJCIvXM308PD////////////p6eru
g0gxMjIxLy4tLi0sKykpKSkoJycnJiclJCQlJSMjIyIhIiEiISIiIiIjJCQjLVzK9PDx////////
////6Onp7X1HMjExMS8uLS0sLCoqKignKCcnJyYmJSQlJCQjJCIhIiIiISIiISIiIiQkIy1cyPXv
8f///////////+fo6up5SDIyMTAuLi0sKysqKikoJycnJyYlJyUkJSUkIyMjISIiIiEgIiEiISEj
IyErXMf38fH////////////n6OjqdEczMjEwLy4uLCwsKiopKSgnKCYnJiYlJSQkJCMjIyIhIiIi
IiIiISEhISIhK13H9/Dx////////////5ubo6HBIMjIxMC8vLSwtKyopKikoJycmJSUlJiYlIyQj
IyMhIiIiIiIiIiEhIiIiISlexPfx8P///////////+Xm6udsSDExMTAwLy0sLCwrKiopKCcnJiYl
JSQlJSQkIyMjIiIhIiIiIiIhISEiIiAoXcL27/H////////////k5ujkaUcyMTEvLy4tLCwsKioq
KCgnJyYlJiQlJCUkJCIjIiIiIiIhISEgISEhISIgJ13A9u/w////////////5Obo4mZIMTEwLy8u
LSwsLCoqKigoJycmJSUlJCUlJCMjIyIiIiIiISEgICAgICEhICZdv/bv8P///////////+Pk5t9k
SDExLy8vLi4sLCsrKSkpKCgnJiYlJCQlIyQjIiIhIiIiIiEgICAgICAgICAkW7327e7/////////
///h4+TcYkcxMjAvLy4tLCwsKiopKSgoJyYlJSUkJCMkIyEhIiIiIiIiICAgICEhICAgJFq79u7t
////////////3+Dk2GBIMTEwLy8uLSwrKisqKSkoJyYmJSUkIyMjIiIiIiIiIiIhISAgICAgICAh
ICNZuPXu7f///////////97f4tRfSTEyMTAuLS0sKioqKSkpKCcmJiYkJSMjIyMiIiEiIiIiICAh
ICAgHx8gIB8iWLf27e3////////////e3uHPXUkvMTEwLy4tLCoqKiopKSgnJyYlJSUkIyIjIiMi
IiIiIiEhISEgIB8fICAfIli19uvt////////////3d3izF5JMDIxMC8uLSsrKykqKikoJycmJSQk
JSUjIyIiIiIiIiEhISEgICAfHx8gHyBYs/Xr7P///////////9zd4cldSTAyMTAvLi0tKisrKigo
KCcnJiUmJSUkIiMiIiIhISEhISEhISEgHx8gICAgVbL17Oz////////////c3OHFXUowMzEwLy4t
LSsrKiooKCgnJyYlJiYlJCMkIiIhISEhISEhISEhIB8fICAgIFav9ezr////////////2drgwVpI
MTMyMS8uLSwsLCopKSgnJycnJiYlJCQlIyIjIiEhISEhISEgICAgICAgHx9TrvPr6///////////
/9na4L9ZRzAzMjAwLi0uLCsrKSkoJycnJycmJSUmJSIiIiIiIiIhISEhISEhICAgIB8gUavy6er/
///////////Z2uC6WEcvNDIwMC4tLisrKikpKCcnJycmJiUlJCQjIiMiIiIiISEhISEhICAgICAf
HlCp8enq////////////2drguVhGMDQzMTAvLiwsKyopKSgnKCcnJiclJSQlJCMiIiEjISEhISEg
ICAgHyAgIB9Pp/Lp6f///////////9nZ4LVWRTA1MzEwLy4tLCsrKikoJycnJycmJSQkJCUkIiEi
IiIhIiEgICAfIB8gISAgTaPw6Oj////////////Y2eCyVkMwMzIwMC8uLCwsKyopKCcnJygnJiQl
JSUlJCIjIyIiIiIiISEgHx8fHyAfIEyg7+no////////////19ngsFZCMTMyMS8vLi0sKioqKSkn
JycnJiUlJSUkJCQkJCEhIiIhISAhISAfHyAhIB9Lne7n5////////////9jY4KxTPzEzMTAvLi8t
LCorKykpKSgnJyUlJiUlJCQkJCMhIyIiIiIiISEgHx8gIB8eSpvs6Of////////////Y2OCnUj4x
MjEvLy8uLSwrKysqKSkoJycmJyUkJSQlJSQkIiMjIiIiIiEgISAgISAeH0qa7Ojo////////////
2dnhqlE7MjIyMC8vLi4tKysqKikoJycnJiUlJCUkJSUkIyMiIiEhIiEhISAgICAgHx9Jn+3p5///
/////////9ra4qlROTExMDAvLy4tLSsqKikpKCcnJyYlJSQkJCUkJSQkIyMiIiEiISEfICAgIB8f
SKDt5+b////////////Z2eKnUDcvLy4tLiwsKyoqKikoJycmIyMkJCMjIyIiIiIiIiEgICEgHx8g
ICAeHh4eHkie7OXl////////////2NnjplBVUVNSUVJSUVFQTUtOTkxMTEpJSUlGR0dHR0ZGRkdF
RERAQURDQ0JCQEA+Pj1MoOvl5P///////////9jZ5KVLYlxbZmVkY2NiYWBUTl5eXl5dXVxZWFlX
V1hZWFdXVlRTTz9HTk1MS0lIRkNCPpzt5OP////////////Y2t/JjoqEfn56dnJwbmtqXlpjY2Fh
YF9dYWJgYWFcXF5gYWJjZGRfZm9ydnt/goiPkpXL6OTj////////////19nb3uLf39/d3dza2tnZ
2tnZ2NfW1dbV1djZ2tvb1tbY2tvc3d7h4+Tl5+bn6err7O3u5+Pj4/////8=
			</picture>
		</globals>
		
		<function_block>
			<id>firewall</id>
			<firewall>
				<name>
					<english>Firewall</english>
					<german>Firewall</german>
					<french>Pare-feu</french>
				</name>
				<header_label>
					<english>Control of data traffic between this computer and the LAN/internet</english>
					<german>Kontrolle des Datenverkehrs zw. diesem Computer und dem LAN/Internet</german>
					<french>Contrôle du traffic des données entre l'ordinateur le réseau</french>
				</header_label>
				<use_device_chkbox>
					<english>Use this function</english>
					<german>Funktion verwenden</german>
					<french>Utiliser cette fonction</french>
					<default_value>true</default_value>
					<example>
						[page:],[name:],[LANbot_control:use_device_chkbox],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:lanbot.helper_class.Write]
						<code>
						<!--
						using System;
						using System.Data;
						using System.Collections;
						using System.IO;
						using System.Windows.Forms;
						using System.Xml;
						using LanbotUtilities;
						using LanbotUtilities.Spider;

						namespace lanbot
						{
							public class helper_class : lanbot.Commands
							{
								public helper_class()
								{
								}

								public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									return 0;
								}
								public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									int							res=0;				// must be initialized because a call by reference follows
									int							ret_code=ret_code=(int)ERROR.NO_ERROR;
									LanbotUtilities.LanbotWMI	WMI=new LanbotWMI();

									if (WMI.is_windows_firewall_enabled(ref res)==true)
									{
										if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0) 
											Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: WMI.is_windows_firewall_enabled(ref res) has detected a Windows firewall");

											// save the data in the control now
										if (res==1) dt.Rows[1][index_in_table]="true"; else dt.Rows[1][index_in_table]="false";
									}
									else
									{
										ret_code=(int)ERROR.NO_ERROR;
										if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0) 
											Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: WMI.is_windows_firewall_enabled(ref res) has detected no firewall at all => ");
										dt.Rows[1][index_in_table]="false";			// let's definitely NOT use this device as it's simply not available
											// VERY IMPORTANT: mark the function block as "not available at all"
										dt.Rows[1]["write_protect_row"]="256";	// set bit 8 in row 1 in order to disable the firewall building block completely
									}
									
									return ret_code;
								}
								public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									return 0;
								}
								public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									bool				enable_or_disable=false;	// default: disable firewall
									int					ret_code=ret_code=(int)ERROR.NO_ERROR;
									LanbotUtilities.LanbotWMI	WMI=new LanbotWMI();

									if ((string)dt.Rows[1][index_in_table]=="true") enable_or_disable=true;
									if (WMI.enable_or_disble_windows_firewall(enable_or_disable)==true)
									{
										if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0)
										{
											Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: WMI.enable_or_disble_windows_firewall(enable_or_disable) successfully executed.");
											if ((string)dt.Rows[1][index_in_table]=="true") Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: WMI.enable_or_disble_windows_firewall(enable_or_disable): firewall enabled.");
											else Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: WMI.enable_or_disble_windows_firewall(enable_or_disable): firewall disabled.");
										}
									}
									else
									{
										ret_code=(int)ERROR.UNKNOWN_ERROR;
										if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0) 
											Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: WMI.enable_or_disble_windows_firewall(enable_or_disable) execution error.");
									}
									return ret_code;
								}
							}
						}
						-->
						</code>
					</example>
				</use_device_chkbox>

				<ports>
					<ports_label>
						<english>List of open ports</english>
						<german>Liste geöffneter Ports</german>
						<french>Liste des points de connexion ouverts</french>
					</ports_label>

					<ports_dataGrid>
						// Windows PCs certainly support at least 100 exceptions (no idea how many it really supports)
						<max_data_sets>3</max_data_sets>
						<english>Definition of open ports@@@Start port (0-65535)@@@No. of open ports@@@Port extern (port translation)@@@Name@@@Protocols@@@Remote IP addresses@@@Scope</english>
						<german>Definition von geöffneten Ports@@@Start Port (0-65535)@@@Anzahl geöffneter Ports@@@Port extern (Umrechnung intern-extern)@@@Name@@@Protokolle@@@Remote IP Adressen@@@Gültigkeitsbereich</german>
						<french>Définition des points de connexion ouverts@@@Premier point de connexion@@@Nombre des points de connexions@@@Traduction des ports (extérieur-intérieur)@@@Nom@@@Protocols@@@Adresses éloingés@@@Domaine de validité</french>
						<example>
							[page:],[name:],[LANbot_control:],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:lanbot.helper_class.Write]
							<code>
							<!--
							using System;
							using System.Data;
							using System.Collections;
							using System.IO;
							using System.Windows.Forms;
							using System.Xml;
							using LanbotUtilities;

							namespace lanbot
							{
								public class helper_class : lanbot.Commands
								{
									public helper_class()
									{
									}

									public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										bool found;
										int int_buf;
											// check if firewall exists. If not, return without signalling an error
										int_buf=Convert.ToInt32((string)dt.Rows[1]["write_protect_row"],10);
										if ((int_buf & 0x0100)>0) return (int)ERROR.NO_ERROR;
										
										LanbotWMI WMI=new LanbotWMI();

										found=WMI.fill_ports_dataGrid_with_local_firewall_data(ref dt);
										if (found==false) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: fill_ports_dataGrid_with_local_firewall_data(ref dt) has failed");
											return (int)ERROR.ITEM_NOT_FOUND;																															
										}
										else
										{
											return (int)ERROR.NO_ERROR;
										}
									}
									public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										bool b;
										int int_buf;
											// check if firewall exists. If not, return without signalling an error
										int_buf=Convert.ToInt32((string)dt.Rows[1]["write_protect_row"],10);
										if ((int_buf & 0x0100)>0) return (int)ERROR.NO_ERROR;
										
										LanbotWMI WMI=new LanbotWMI();

										b=WMI.apply_changes_to_globally_open_ports(ref dt);
										if (b==false) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: apply_changes_to_globally_open_ports(ref dt) has failed");
											return (int)ERROR.WRITE_ERROR;																															
										}

											// let the application breathe for a long time, if necessary
										Application.DoEvents();
										System.Threading.Thread.Sleep(0);
										
										b=WMI.fill_ports_dataGrid_with_local_firewall_data(ref dt);
										if (b==false) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: fill_ports_dataGrid_with_local_firewall_data(ref dt) has failed");
											return (int)ERROR.WRITE_ERROR;																															
										}
										
											// let the application breathe for a long time, if necessary
										Application.DoEvents();
										System.Threading.Thread.Sleep(0);

										b=WMI.fill_services_dataGrid_with_local_firewall_data(ref dt);
										if (b==false) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: fill_services_dataGrid_with_local_firewall_data(ref dt) has failed");
											return (int)ERROR.WRITE_ERROR;																															
										}

										return (int)ERROR.NO_ERROR;
									}
								}
							}
							-->
							</code>
						</example>
					</ports_dataGrid>
				</ports>

				<services>
					<services_label>
						<english>List of services that are tolerated by the firewall (write protected)</english>
						<german>Liste von Diensten, die von der Firewall toleriert werden (schreibgeschützt)</german>
						<french>Liste des services qui sont tolérés par le pare-feu (verrouillé)</french>
					</services_label>
					<services_dataGrid>
						// Windows PCs certainly support at least 100 exceptions (no idea how many it really supports)
						<max_data_sets>3</max_data_sets>
						<english>Definition of services which can freely pass the firewall@@@Name@@@Globally open ports (start ports only)@@@Remote IP addresses@@@Scope@@@Type</english>
						<german>Definition von Diensten, für welche die Firewall geöffnet ist@@@Name@@@Global geöffnete Ports (nur Startport angeben)@@@Remote IP Adressen@@@Gültigkeitsbereich@@@Typ</german>
						<french>Définition des services qui peuvent passer le pare-feu librements@@@Nom@@@Points de connexion ouverts globalement (premiers points de connexion seulement)@@@Adresses éloingés@@@Domaine de validité@@@Type</french>
						<example>
							[page:],[name:],[LANbot_control:],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:lanbot.helper_class.Write]
							<code>
							<!--
							using System;
							using System.Data;
							using System.Collections;
							using System.IO;
							using System.Windows.Forms;
							using System.Xml;
							using LanbotUtilities;

							namespace lanbot
							{
								public class helper_class : lanbot.Commands
								{
									public helper_class()
									{
									}

									public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										bool found;
										int int_buf;
											// check if firewall exists. If not, return without signalling an error
										int_buf=Convert.ToInt32((string)dt.Rows[1]["write_protect_row"],10);
										if ((int_buf & 0x0100)>0) return (int)ERROR.NO_ERROR;

										LanbotWMI WMI=new LanbotWMI();

										found=WMI.fill_services_dataGrid_with_local_firewall_data(ref dt);
										if (found==false) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: fill_services_dataGrid_with_local_firewall_data(ref dt) has failed");
											return (int)ERROR.ITEM_NOT_FOUND;																															
										}
										else
										{
											return (int)ERROR.NO_ERROR;
										}
									}
									public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										bool b;

										int int_buf;
											// check if firewall exists. If not, return without signalling an error
										int_buf=Convert.ToInt32((string)dt.Rows[1]["write_protect_row"],10);
										if ((int_buf & 0x0100)>0) return (int)ERROR.NO_ERROR;
										LanbotWMI WMI=new LanbotWMI();

										b=WMI.apply_changes_to_services(ref dt);
										if (b==false) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: apply_changes_to_services(ref dt) has failed");
											return (int)ERROR.WRITE_ERROR;																															
										}
										
											// let the application breathe for a long time, if necessary
										Application.DoEvents();
										System.Threading.Thread.Sleep(0);

										b=WMI.fill_ports_dataGrid_with_local_firewall_data(ref dt);
										if (b==false) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: fill_ports_dataGrid_with_local_firewall_data(ref dt) has failed");
											return (int)ERROR.WRITE_ERROR;																															
										}

											// let the application breathe for a long time, if necessary
										Application.DoEvents();
										System.Threading.Thread.Sleep(0);
										
										b=WMI.fill_services_dataGrid_with_local_firewall_data(ref dt);
										if (b==false) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: fill_services_dataGrid_with_local_firewall_data(ref dt) has failed");
											return (int)ERROR.WRITE_ERROR;																															
										}

										return (int)ERROR.NO_ERROR;
									}
								}
							}
							-->
							</code>
						</example>
					</services_dataGrid>
				</services>

				<applications>
					<applications_label>
						<english>List of applications that are authorized to use any port</english>
						<german>Liste von Anwendungsprogrammen, die jeden Port verwenden dürfen</german>
						<french>Liste des programmes qui peuvent utiliser tous les points de connexion</french>
					</applications_label>
					<applications_dataGrid>
						// Windows PCs certainly support at least 100 exceptions (no idea how many it really supports)
						<max_data_sets>3</max_data_sets>
						<english>Definition of applications that are authorized to use any port@@@Name@@@Full path to application file@@@Remote IP addresses@@@Scope</english>
						<german>Definition von Anwendungsprogrammen, die jeden Port verwenden dürfen@@@Name@@@Kompletter Dateipfad des Anwendungsprogramms@@@Remote IP Adressen@@@Gültigkeitsbereich</german>
						<french>Définition des programmes qui peuvent utiliser tous les points de connexion@@@Nom@@@Sentier de fichier de l'application complet@@@Adresses éloingés@@@Domaine de validité</french>
						<example>
							[page:],[name:],[LANbot_control:],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:lanbot.helper_class.Write]
							<code>
							<!--
							using System;
							using System.Data;
							using System.Collections;
							using System.IO;
							using System.Windows.Forms;
							using System.Xml;
							using LanbotUtilities;

							namespace lanbot
							{
								public class helper_class : lanbot.Commands
								{
									public helper_class()
									{
									}

									public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										bool found;
										int int_buf;
											// check if firewall exists. If not, return without signalling an error
										int_buf=Convert.ToInt32((string)dt.Rows[1]["write_protect_row"],10);
										if ((int_buf & 0x0100)>0) return (int)ERROR.NO_ERROR;

										LanbotWMI WMI=new LanbotWMI();

										found=WMI.fill_applications_dataGrid_with_authorized_applications(ref dt);
										if (found==false) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: fill_applications_dataGrid_with_local_firewall_data(ref dt) has failed");
											return (int)ERROR.ITEM_NOT_FOUND;																															
										}
										else
										{
											return (int)ERROR.NO_ERROR;
										}
									}
									public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										bool b;
										int int_buf;
											// check if firewall exists. If not, return without signalling an error
										int_buf=Convert.ToInt32((string)dt.Rows[1]["write_protect_row"],10);
										if ((int_buf & 0x0100)>0) return (int)ERROR.NO_ERROR;

										LanbotWMI WMI=new LanbotWMI();

										b=WMI.apply_changes_to_authorized_applications(ref dt);
										if (b==false) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: apply_changes_to_authorized_applications(ref dt) has failed");
											return (int)ERROR.WRITE_ERROR;																															
										}
										
										b=WMI.fill_applications_dataGrid_with_authorized_applications(ref dt);
										if (b==false) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: fill_applications_dataGrid_with_authorized_applications(ref dt) has failed");
											return (int)ERROR.WRITE_ERROR;																															
										}
										return (int)ERROR.NO_ERROR;
									}
								}
							}
							-->
							</code>
						</example>
					</applications_dataGrid>
				</applications>
				
			</firewall>
		</function_block>


		<function_block>
			<id>pppoe</id>
			<pppoe>
				<name>
					<english>PPPoE WAN interface</english>
					<german>PPPoE WAN Interface</german>
					<french>Interface WAN PPPoE</french>
				</name>
				<header_label>
					<english>Wide area network (WAN) internet connection via PPPoE (Point to Point Protocol over Ethernet)</english>
					<german>Wide area network (WAN) Internet Verbindung über PPPoE (Point to Point Protocol over Ethernet)</german>
					<french>Wide area network (WAN) internet connexion via PPPoE (Point to Point Protocol over Ethernet)</french>
				</header_label>
				<use_device_chkbox>
					<english>Use this function</english>
					<german>Funktion verwenden</german>
					<french>Utiliser cette fonction</french>
					<default_value>true</default_value>
				</use_device_chkbox>
				<create_and_edit_button>
					<english>Create/edit PPPoE connections</english>
					<german>PPPoE Verbindungen erzeugen oder ändern</german>
					<french>Créer/modifier connexions PPPoE</french>
						<example>
							[page:],[name:],[LANbot_control:],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:lanbot.helper_class.Write]
							<code>
							<!--
							using System;
							using System.Data;
							using System.Collections;
							using System.IO;
							using System.Windows.Forms;
							using System.Xml;
							using LanbotUtilities;

							namespace lanbot
							{
								public class helper_class : lanbot.Commands
								{
									public helper_class()
									{
									}
									public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										LanbotUtilities.Network.update_PPPoE_DataTable_with_host_connections(ref dt);
										LanbotUtilities.Network.apply_PPPoE_settings_for_host_from_DataTable(ref dt);
										return 0;
									}
									public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
								}
							}
							-->
							</code>
						</example>
				</create_and_edit_button>
				<dataGrid>
						// Windows PCs certainly support at least 100 exceptions (no idea how many it really supports)
						<max_data_sets>3</max_data_sets>
						<english>Available PPPoE connections@@@Name of connection@@@User name@@@Password@@@Idle timeout (seconds)@@@Get DNS automatically from ISP@@@Primary DNS@@@Secondary DNS</english>
						<german>Verfügbare PPPoE Verbindungen@@@Name der Verbindung@@@Benutzername@@@Passwort@@@Max. Leerlaufzeit (Sekunden)@@@DNS automatisch beziehen@@@Primärer DNS@@@Sekundärer DNS</german>
						<french>Connexions PPPoE disponibles@@@Nom de la connexion@@@Nom d'utilisateur@@@Mot de passe@@@Max. temps de marche a vide (secondes)@@@Recouvrir les donnée sur DNS automatiquement@@@Prim. DNS@@@Sec. DNS</french>
						<example>
							[page:],[name:],[LANbot_control:],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:lanbot.helper_class.Write]
							<code>
							<!--
							using System;
							using System.Data;
							using System.Collections;
							using System.IO;
							using System.Windows.Forms;
							using System.Xml;
							using LanbotUtilities;

							namespace lanbot
							{
								public class helper_class : lanbot.Commands
								{
									public helper_class()
									{
									}

									public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										int err=(int)ERROR.NO_ERROR;
										string name,usr="",pwd="",dns1="",dns2="";							
										int i,idle_timeout=0;
										bool get_DNS_from_ISP=false;
										
										err=LanbotUtilities.Network.retrieve_PPPoE_connections_of_host();
										if (err!=(int)ERROR.NO_ERROR) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: LanbotUtilities.Network.retrieve_PPPoE_connections_of_host() has failed");
											return (int)ERROR.ITEM_NOT_FOUND;																															
										}
										else
										{
											i=1;
											foreach(RasEntry entry in Cglobals.RasEntries)
											{
												name=entry.EntryName;
												err=LanbotUtilities.Network.retrieve_settings_of_a_specific_PPPoE_host_connection(name,ref usr,ref pwd,ref idle_timeout,ref get_DNS_from_ISP,ref dns1,ref dns2);
												dt.Rows[i]["names"]=name;
												dt.Rows[i]["usernames"]=usr;
												dt.Rows[i]["passwords"]=pwd;
												dt.Rows[i]["idle_timeouts"]=idle_timeout;
												dt.Rows[i]["get_DNS_automatically"]=get_DNS_from_ISP;
												dt.Rows[i]["dns1"]=dns1;
												dt.Rows[i]["dns2"]=dns2;
												i++;
											}
											return err;
										}
									}
									public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
								}
							}
							-->
							</code>
						</example>
				</dataGrid>

				
				
			</pppoe>
		</function_block>

		
		
	</device>








	<!-- The following device represents a computer (e.g. a host computer) that is connected to LANbot by remoting -->
	<device>
		<device_id>computer</device_id>
		<globals>
			<lan_device>
				<english>Computer</english>
				<german>Computer</german>
				<french>Ordinateur</french>
				<show_minimized>false</show_minimized>
			</lan_device>

			<header_label>
				// strings can be pretty long here (3 lines with automatic line break)
				<english>Computer in this LAN</english>
				<german>Computer in diesem LAN</german>
				<french>Un ordinateur dans ce réseau</french>
			</header_label>
			<use_device_chkbox>
				<english>Use device</english>
				<german>Gerät verwenden</german>
				<french>Utiliser l'appareil</french>
					// use_device_chkbox: can be true, false or disabled. If disabled, the control appears in the checked state, but does not accept inputs
				<default_value>disabled</default_value>
			</use_device_chkbox>

			<username_label>
				<english>User name</english>
				<german>Benutzername</german>
				<french>Nom d'utilisateur</french>
				<default_value>admin</default_value>
					// credentials_mode: disable: username and password are not applicable
				<credentials_mode>disable</credentials_mode>
			</username_label>
			<password_label>
				<english>Password</english>
				<german>Passwort</german>
				<french>Nom d'utilisateur</french>
				<default_value>password</default_value>
			</password_label>
			
			<IP_addr_label>
				<english>IP address</english>
				<german>IP Adresse</german>
				<french>Adresse IP</french>
			</IP_addr_label>
			<subnet_mask_label>
				<english>Subnet mask</english>
				<german>Subnetzmaske</german>
				<french>Masque subnet</french>
			</subnet_mask_label>
			<standard_gateway_label>
				<english>Standard gateway</english>
				<german>Standardgateway</german>
				<french>Passerelle standard</french>
				<default_value>disabled</default_value>
			</standard_gateway_label>


			<picture>Qk02FAAAAAAAADYEAAAoAAAAQAAAAEAAAAABAAgAAAAAAAAAAAASCwAAEgsAAAABAAAAAQAAAAAA
/wEBAf8CAgL/AwMD/wQEBP8FBQX/BgYG/wcHB/8ICAj/CQkJ/woKCv8LCwv/DAwM/w0NDf8ODg7/
Dw8P/xAQEP8RERH/EhIS/xMTE/8UFBT/FRUV/xYWFv8XFxf/GBgY/xkZGf8aGhr/Gxsb/xwcHP8d
HR3/Hh4e/x8fH/8gICD/ISEh/yIiIv8jIyP/JCQk/yUlJf8mJib/Jycn/ygoKP8pKSn/Kioq/ysr
K/8sLCz/LS0t/y4uLv8vLy//MDAw/zExMf8yMjL/MzMz/zQ0NP81NTX/NjY2/zc3N/84ODj/OTk5
/zo6Ov87Ozv/PDw8/z09Pf8+Pj7/Pz8//0BAQP9BQUH/QkJC/0NDQ/9ERET/RUVF/0ZGRv9HR0f/
SEhI/0lJSf9KSkr/S0tL/0xMTP9NTU3/Tk5O/09PT/9QUFD/UVFR/1JSUv9TU1P/VFRU/1VVVf9W
Vlb/V1dX/1hYWP9ZWVn/Wlpa/1tbW/9cXFz/XV1d/15eXv9fX1//YGBg/2FhYf9iYmL/Y2Nj/2Rk
ZP9lZWX/ZmZm/2dnZ/9oaGj/aWlp/2pqav9ra2v/bGxs/21tbf9ubm7/b29v/3BwcP9xcXH/cnJy
/3Nzc/90dHT/dXV1/3Z2dv93d3f/eHh4/3l5ef96enr/e3t7/3x8fP99fX3/fn5+/39/f/+AgID/
gYGB/4KCgv+Dg4P/hISE/4WFhf+Ghob/h4eH/4iIiP+JiYn/ioqK/4uLi/+MjIz/jY2N/46Ojv+P
j4//kJCQ/5GRkf+SkpL/k5OT/5SUlP+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv+bm5v/nJyc/52d
nf+enp7/n5+f/6CgoP+hoaH/oqKi/6Ojo/+kpKT/paWl/6ampv+np6f/qKio/6mpqf+qqqr/q6ur
/6ysrP+tra3/rq6u/6+vr/+wsLD/sbGx/7Kysv+zs7P/tLS0/7W1tf+2trb/t7e3/7i4uP+5ubn/
urq6/7u7u/+8vLz/vb29/76+vv+/v7//wMDA/8HBwf/CwsL/w8PD/8TExP/FxcX/xsbG/8fHx//I
yMj/ycnJ/8rKyv/Ly8v/zMzM/83Nzf/Ozs7/z8/P/9DQ0P/R0dH/0tLS/9PT0//U1NT/1dXV/9bW
1v/X19f/2NjY/9nZ2f/a2tr/29vb/9zc3P/d3d3/3t7e/9/f3//g4OD/4eHh/+Li4v/j4+P/5OTk
/+Xl5f/m5ub/5+fn/+jo6P/p6en/6urq/+vr6//s7Oz/7e3t/+7u7v/v7+//8PDw//Hx8f/y8vL/
8/Pz//T09P/19fX/9vb2//f39//4+Pj/+fn5//r6+v/7+/v//Pz8//39/f/+/v7/////////////
9vHr6+rp6ejm5ubl4uHd2NbV0tHPzczLysjGxMPDwcHEx8nLzMzNzcvLzMzNzM3Oz9LV4eXs9v//
//////////LhvKWcl5WRjouIhoZ6al9aWFRSUU1MSUdGRkdDQkdMSE9XW11eXl5cXF1bW11fYWFj
ZYaVtez////////////0vFhKOzo5ODg3NjhLR0M4MDQxNjUxLy4xMjMzLCtCT0NFQ0RDQ0NCQkFC
NS4wMTEyMTI9RVzf////////////8opUTEJDRUZGRkVJVlZSUlNVUkJATFdXV1ZVUk1RWltbXlta
WllWVlNSU0o/Pz08Ozs6PEVR0P///////////+2/xsfJycvO0tbX2drb3ubn5deMgrzs5efmz9TV
1N7m6+no5ebl4+Hm4dzZ1dHNy8jGwr65rdr////////////uxtzi4+Pk5OXm5uXm5ubJxujo5Obo
6Onp5ubp6uvr6+vr6+rp6+3nus/x7u/w7u/t7Ovp6N3n////////////9LCosK6ur6+vsbGwsrOz
rKqztri4vcW8xcnFyMO9vLy8vLy8uru7uq6yuru8u7q6u7m4uLm35/////////////m8m6empqWm
pqmqqqmqqqyurKystMK5jqSnjKzHv7SysrOysrKzsrGysbCwsa6vrJ+epLCutO3////////////7
yJmmpqamp6enqKmpqqqqqqymtLy9wM7RyLa2uLe3rK6zsbKysrGxsrCxsbCwsKSSnaWvrMD0////
////////+NWXpKalpaWmpqanp6eoqK2Na3R4e3+AgHqAeHNubmiFsq+wsK+ur6+urq+tra6nmp2q
rqnO+f////////////fjl6KkpKWmqKenqKioqqugaGBcU01OTU1PTU5OT15jZJixsrKysrKxsLCv
r66srK6tq6qr2fr////////////376GcpJ2bmJWVlZOSkY+GbGFjX1VPUlJSU1FRUE9cY2RofYqO
jo+SkpSUlpiZmpucn6mrrOL4////////////9/a2lnxjY2NiZGRkY2JhX2JlZGBYUFFSU1JSUlFQ
W2RlZGNiYWJkZWVlZWZnZ2hnZ2Zwm7Ls+P////////////b4x41hW1lcW11dXlxdXV1eXFxcWFVV
VlVWWFZVWlldX11eYF5gYmBiYmJjY2JjYWBhXoa+8Pj////////////29tWLXU5eZFdNZWRRWmde
UGBlaF1dXF1cXWdmYE1iX05iXVFoYFFrYVppXVtpWFplVFWCzPb4////////////9vTjiFxQZF1X
UGNfVFxkX01eYmBjZGBjY2JjY2BQZ2BUaF5UamFUaV9YbVZedFBYaVNVgNj5+P////////////Ty
65JbTlpnXV1RWGFUXF9QX15SYV5TYlxVZFZYblVcZ1dgZ1RgZFBrcWVOXGlLXmRVWILg9/j/////
///////08PGrWFFXY15PVmJQW2NTYF9TY1tWZVdWZFNaZlVgYE9iYFFjWFVjWmBlYmNgUWNiWFyL
6/f4////////////8e/yvV5VUGpeTmdZUmdQWm5TYWdSZmZSaVpSaFNZbVFeZU9fXE5kV1JnW2Be
WlJnZFhfmfP2+P////////////Px89FsWFVkUVtkUGBlT2RhV2VaW2NdXWFaZWdiZF9laGBjaWFh
X2BjYGFlZWBWbGRUX7H29vj////////////z8vPkd1lMQFpfTmNhVWRbUmpUW2tLYWVKaV5UclJV
aVJea1BbZExqX05xbGVYVmtTUmTI9fL2////////////8e/v7JJPTV9eUllcV2RYY1dfX1tuUmRi
XmtYaVxnZVtxXHpnYn1ZXHxafmVwb2V3WE592vHx8////////////+7u7fKzY1hYVl50bl1bX11X
WVVXV1lYV1pYXFpZXl5hY3RiaHBcbm9jZ2Vqa2phYmRomuTw7/D////////////s7ezxv21mVGd+
g4F4eHdyT0xKQUZJR0ZHSEVFRURCQEJNREhRRk5gZmhrb3B0cllndJjq7+7v////////////7evq
87hQUU2N2s3Ny8jKvlJMTk1LTUxMS0xLS0tKSEhJSUpKS0xIhLKvrq2tr6hUR0Rh5O7u7v//////
/////+vr6vWfTWdifqyoqKinp6BlWFhXV1dVVlVVVFJRUU9PT1BQT09PTHGTj42KiYmCUUdHWNrw
7u/////////////r6uv1mEZoY1xTUE9OTEpKTUtLS0tKTEtKSkpKSUZHRUVFRUREREVCP0A+PTw6
OkJERVjW8+7v////////////6uvp85dFT0xKSEVFQ0FCQUBBPz8/Pz8/PT4+PT08OTk6OTk5ODc1
NjY1NTQ0NDQ1NT9X1vLt7v///////////+np6vOUQy8uLSsqKSgoKCcmJiQkJCQjIiEhICEgHx8f
Hx4eHx4eHR0eHR0eHh8fISAwW9Xy7e/////////////q6urzkUUyMTEwLi4tKywrKikpKCgoJycm
JiYmJSMkJCQiIyMjIyMjIiIiIiIiIyUkMVrR8+3w////////////6+vr8YtFMjExMC8vLSwsKyop
KSgpKCcnJyYmJiUlJCQkIyMjIyMjIiIjIyIhIyQkIzJb0PTv7////////////+rr6++HRzIxMTAv
Li0tLCsqKikpKCgnJycmJiYlJSUkJCQjIyMiIiIiIiEiIiMkJCIvXM308PD////////////p6eru
g0gxMjIxLy4tLi0sKykpKSkoJycnJiclJCQlJSMjIyIhIiEiISIiIiIjJCQjLVzK9PDx////////
////6Onp7X1HMjExMS8uLS0sLCoqKignKCcnJyYmJSQlJCQjJCIhIiIiISIiISIiIiQkIy1cyPXv
8f///////////+fo6up5SDIyMTAuLi0sKysqKikoJycnJyYlJyUkJSUkIyMjISIiIiEgIiEiISEj
IyErXMf38fH////////////n6OjqdEczMjEwLy4uLCwsKiopKSgnKCYnJiYlJSQkJCMjIyIhIiIi
IiIiISEhISIhK13H9/Dx////////////5ubo6HBIMjIxMC8vLSwtKyopKikoJycmJSUlJiYlIyQj
IyMhIiIiIiIiIiEhIiIiISlexPfx8P///////////+Xm6udsSDExMTAwLy0sLCwrKiopKCcnJiYl
JSQlJSQkIyMjIiIhIiIiIiIhISEiIiAoXcL27/H////////////k5ujkaUcyMTEvLy4tLCwsKioq
KCgnJyYlJiQlJCUkJCIjIiIiIiIhISEgISEhISIgJ13A9u/w////////////5Obo4mZIMTEwLy8u
LSwsLCoqKigoJycmJSUlJCUlJCMjIyIiIiIiISEgICAgICEhICZdv/bv8P///////////+Pk5t9k
SDExLy8vLi4sLCsrKSkpKCgnJiYlJCQlIyQjIiIhIiIiIiEgICAgICAgICAkW7327e7/////////
///h4+TcYkcxMjAvLy4tLCwsKiopKSgoJyYlJSUkJCMkIyEhIiIiIiIiICAgICEhICAgJFq79u7t
////////////3+Dk2GBIMTEwLy8uLSwrKisqKSkoJyYmJSUkIyMjIiIiIiIiIiIhISAgICAgICAh
ICNZuPXu7f///////////97f4tRfSTEyMTAuLS0sKioqKSkpKCcmJiYkJSMjIyMiIiEiIiIiICAh
ICAgHx8gIB8iWLf27e3////////////e3uHPXUkvMTEwLy4tLCoqKiopKSgnJyYlJSUkIyIjIiMi
IiIiIiEhISEgIB8fICAfIli19uvt////////////3d3izF5JMDIxMC8uLSsrKykqKikoJycmJSQk
JSUjIyIiIiIiIiEhISEgICAfHx8gHyBYs/Xr7P///////////9zd4cldSTAyMTAvLi0tKisrKigo
KCcnJiUmJSUkIiMiIiIhISEhISEhISEgHx8gICAgVbL17Oz////////////c3OHFXUowMzEwLy4t
LSsrKiooKCgnJyYlJiYlJCMkIiIhISEhISEhISEhIB8fICAgIFav9ezr////////////2drgwVpI
MTMyMS8uLSwsLCopKSgnJycnJiYlJCQlIyIjIiEhISEhISEgICAgICAgHx9TrvPr6///////////
/9na4L9ZRzAzMjAwLi0uLCsrKSkoJycnJycmJSUmJSIiIiIiIiIhISEhISEhICAgIB8gUavy6er/
///////////Z2uC6WEcvNDIwMC4tLisrKikpKCcnJycmJiUlJCQjIiMiIiIiISEhISEhICAgICAf
HlCp8enq////////////2drguVhGMDQzMTAvLiwsKyopKSgnKCcnJiclJSQlJCMiIiEjISEhISEg
ICAgHyAgIB9Pp/Lp6f///////////9nZ4LVWRTA1MzEwLy4tLCsrKikoJycnJycmJSQkJCUkIiEi
IiIhIiEgICAfIB8gISAgTaPw6Oj////////////Y2eCyVkMwMzIwMC8uLCwsKyopKCcnJygnJiQl
JSUlJCIjIyIiIiIiISEgHx8fHyAfIEyg7+no////////////19ngsFZCMTMyMS8vLi0sKioqKSkn
JycnJiUlJSUkJCQkJCEhIiIhISAhISAfHyAhIB9Lne7n5////////////9jY4KxTPzEzMTAvLi8t
LCorKykpKSgnJyUlJiUlJCQkJCMhIyIiIiIiISEgHx8gIB8eSpvs6Of////////////Y2OCnUj4x
MjEvLy8uLSwrKysqKSkoJycmJyUkJSQlJSQkIiMjIiIiIiEgISAgISAeH0qa7Ojo////////////
2dnhqlE7MjIyMC8vLi4tKysqKikoJycnJiUlJCUkJSUkIyMiIiEhIiEhISAgICAgHx9Jn+3p5///
/////////9ra4qlROTExMDAvLy4tLSsqKikpKCcnJyYlJSQkJCUkJSQkIyMiIiEiISEfICAgIB8f
SKDt5+b////////////Z2eKnUDcvLy4tLiwsKyoqKikoJycmIyMkJCMjIyIiIiIiIiEgICEgHx8g
ICAeHh4eHkie7OXl////////////2NnjplBVUVNSUVJSUVFQTUtOTkxMTEpJSUlGR0dHR0ZGRkdF
RERAQURDQ0JCQEA+Pj1MoOvl5P///////////9jZ5KVLYlxbZmVkY2NiYWBUTl5eXl5dXVxZWFlX
V1hZWFdXVlRTTz9HTk1MS0lIRkNCPpzt5OP////////////Y2t/JjoqEfn56dnJwbmtqXlpjY2Fh
YF9dYWJgYWFcXF5gYWJjZGRfZm9ydnt/goiPkpXL6OTj////////////19nb3uLf39/d3dza2tnZ
2tnZ2NfW1dbV1djZ2tvb1tbY2tvc3d7h4+Tl5+bn6err7O3u5+Pj4/////8=
			</picture>
		</globals>
		
		<function_block>
			<id>firewall</id>
			<firewall>
				<name>
					<english>Firewall</english>
					<german>Firewall</german>
					<french>Pare-feu</french>
				</name>
				<header_label>
					<english>Control of data traffic between this computer and the LAN/internet</english>
					<german>Kontrolle des Datenverkehrs zw. diesem Computer und dem LAN/Internet</german>
					<french>Contrôle du traffic des données entre l'ordinateur le réseau</french>
				</header_label>
				<use_device_chkbox>
					<english>Use this function</english>
					<german>Funktion verwenden</german>
					<french>Utiliser cette fonction</french>
					<default_value>true</default_value>
				</use_device_chkbox>

				<ports>
					<ports_label>
						<english>List of open ports</english>
						<german>Liste geöffneter Ports</german>
						<french>Liste des points de connexion ouverts</french>
					</ports_label>

					<ports_dataGrid>
						// Windows PCs certainly support at least 100 exceptions (no idea how many it really supports)
						<max_data_sets>1</max_data_sets>
						<english>Definition of open ports@@@Start port (0-65535)@@@No. of open ports@@@Port extern (port translation)@@@Name@@@Protocols@@@Remote IP addresses@@@Scope</english>
						<german>Definition von geöffneten Ports@@@Start Port (0-65535)@@@Anzahl geöffneter Ports@@@Port extern (Umrechnung intern-extern)@@@Name@@@Protokolle@@@Remote IP Adressen@@@Gültigkeitsbereich</german>
						<french>Définition des points de connexion ouverts@@@Premier point de connexion@@@Nombre des points de connexions@@@Traduction des ports (extérieur-intérieur)@@@Nom@@@Protocols@@@Adresses éloingés@@@Domaine de validité</french>
					</ports_dataGrid>
				</ports>

				<services>
					<services_label>
						<english>List of services that are tolerated by the firewall</english>
						<german>Liste von Diensten, die von der Firewall toleriert werden</german>
						<french>Liste des services qui sont tolérés par le pare-feu</french>
					</services_label>
					<services_dataGrid>
						// Windows PCs certainly support at least 100 exceptions (no idea how many it really supports)
						<max_data_sets>1</max_data_sets>
						<english>Definition of services which can freely pass the firewall@@@Name@@@Globally open ports (start ports only)@@@Remote IP addresses@@@Scope@@@Type</english>
						<german>Definition von Diensten, für welche die Firewall geöffnet ist@@@Name@@@Global geöffnete Ports (nur Startport angeben)@@@Remote IP Adressen@@@Gültigkeitsbereich@@@Typ</german>
						<french>Définition des services qui peuvent passer le pare-feu librements@@@Nom@@@Points de connexion ouverts globalement (premiers points de connexion seulement)@@@Adresses éloingés@@@Domaine de validité@@@Type</french>
					</services_dataGrid>
				</services>

				<applications>
					<applications_label>
						<english>List of applications that are authorized to use any port</english>
						<german>Liste von Anwendungsprogrammen, die jeden Port verwenden dürfen</german>
						<french>Liste des programmes qui peuvent utiliser tous les points de connexion</french>
					</applications_label>
					<applications_dataGrid>
						// Windows PCs certainly support at least 100 exceptions (no idea how many it really supports)
						<max_data_sets>1</max_data_sets>
						<english>Definition of applications that are authorized to use any port@@@Name@@@Full path to application file@@@Remote IP addresses@@@Scope</english>
						<german>Definition von Anwendungsprogrammen, die jeden Port verwenden dürfen@@@Name@@@Kompletter Dateipfad des Anwendungsprogramms@@@Remote IP Adressen@@@Gültigkeitsbereich</german>
						<french>Définition des programmes qui peuvent utiliser tous les points de connexion@@@Nom@@@Sentier de fichier de l'application complet@@@Adresses éloingés@@@Domaine de validité</french>
					</applications_dataGrid>
				</applications>
				
			</firewall>
		</function_block>
		<function_block>
			<id>pppoe</id>
			<pppoe>
				<name>
					<english>PPPoE WAN interface</english>
					<german>PPPoE WAN Interface</german>
					<french>Interface WAN PPPoE</french>
				</name>
				<header_label>
					<english>Wide area network (WAN) internet connection via PPPoE (Point to Point Protocol over Ethernet)</english>
					<german>Wide area network (WAN) Internet Verbindung über PPPoE (Point to Point Protocol over Ethernet)</german>
					<french>Wide area network (WAN) internet connexion via PPPoE (Point to Point Protocol over Ethernet)</french>
				</header_label>
				<use_device_chkbox>
					<english>Use this function</english>
					<german>Funktion verwenden</german>
					<french>Utiliser cette fonction</french>
					<default_value>true</default_value>
				</use_device_chkbox>
				<create_and_edit_button>
					<english>Create/edit PPPoE connections</english>
					<german>PPPoE Verbindungen erzeugen oder ändern</german>
					<french>Créer/modifier connexions PPPoE</french>
						<example>
							[page:],[name:],[LANbot_control:],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:lanbot.helper_class.Write]
							<code>
							<!--
							using System;
							using System.Data;
							using System.Collections;
							using System.IO;
							using System.Windows.Forms;
							using System.Xml;
							using LanbotUtilities;

							namespace lanbot
							{
								public class helper_class : lanbot.Commands
								{
									public helper_class()
									{
									}
									public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										LanbotUtilities.Network.update_PPPoE_DataTable_with_host_connections(ref dt);
										LanbotUtilities.Network.apply_PPPoE_settings_for_host_from_DataTable(ref dt);
										return 0;
									}
									public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
								}
							}
							-->
							</code>
						</example>
				</create_and_edit_button>
				<dataGrid>
						// Windows PCs certainly support at least 100 exceptions (no idea how many it really supports)
						<max_data_sets>3</max_data_sets>
						<english>Available PPPoE connections@@@Name of connection@@@User name@@@Password@@@Idle timeout (seconds)@@@Get DNS automatically from ISP@@@Primary DNS@@@Secondary DNS</english>
						<german>Verfügbare PPPoE Verbindungen@@@Name der Verbindung@@@Benutzername@@@Passwort@@@Max. Leerlaufzeit (Sekunden)@@@DNS automatisch beziehen@@@Primärer DNS@@@Sekundärer DNS</german>
						<french>Connexions PPPoE disponibles@@@Nom de la connexion@@@Nom d'utilisateur@@@Mot de passe@@@Max. temps de marche a vide (secondes)@@@Recouvrir les donnée sur DNS automatiquement@@@Prim. DNS@@@Sec. DNS</french>
						<example>
							[page:],[name:],[LANbot_control:],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:lanbot.helper_class.Write]
							<code>
							<!--
							using System;
							using System.Data;
							using System.Collections;
							using System.IO;
							using System.Windows.Forms;
							using System.Xml;
							using LanbotUtilities;

							namespace lanbot
							{
								public class helper_class : lanbot.Commands
								{
									public helper_class()
									{
									}

									public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										int err=(int)ERROR.NO_ERROR;
										string name,usr="",pwd="",dns1="",dns2="";							
										int i,idle_timeout=0;
										bool get_DNS_from_ISP=false;
										
										err=LanbotUtilities.Network.retrieve_PPPoE_connections_of_host();
										if (err!=(int)ERROR.NO_ERROR) 
										{
											if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint("RUNTIME COMPILED CODE: LanbotUtilities.Network.retrieve_PPPoE_connections_of_host() has failed");
											return (int)ERROR.ITEM_NOT_FOUND;																															
										}
										else
										{
											i=1;
											foreach(RasEntry entry in Cglobals.RasEntries)
											{
												name=entry.EntryName;
												err=LanbotUtilities.Network.retrieve_settings_of_a_specific_PPPoE_host_connection(name,ref usr,ref pwd,ref idle_timeout,ref get_DNS_from_ISP,ref dns1,ref dns2);
												dt.Rows[i]["names"]=name;
												dt.Rows[i]["usernames"]=usr;
												dt.Rows[i]["passwords"]=pwd;
												dt.Rows[i]["idle_timeouts"]=idle_timeout;
												dt.Rows[i]["get_DNS_automatically"]=get_DNS_from_ISP;
												dt.Rows[i]["dns1"]=dns1;
												dt.Rows[i]["dns2"]=dns2;
												i++;
											}
											return err;
										}
									}
									public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
									public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
									{
										return 0;
									}
								}
							}
							-->
							</code>
						</example>
				</dataGrid>

				
				
			</pppoe>
		</function_block>

		
		
	</device>


</device_definitions>
