netSetNATParam (Function)

Top  Previous  Next

Architecture:

NX32L

Firmware version:

1.50.00


This sets the NAT parameters for a network interface. It has the same effect as setting the parameters via Device: Network: Network Settings.

The NAT parameters for the network interface are non-volatile and therefore need only to be set once.

The parameters set by netSetNATParam can be read using netGetNATParam.

 

Please note that not all interfaces support both forward and gateway. (See Device: Network: Network Settings for which interfaces support which)

 

 

Input:

Iface : SINT

The network interface. (See Network)

 

Forward : BOOL (default FALSE)

Controls whether requests from the interface will be forwarded to other interfaces.

 

Gateway : BOOL (default FALSE)

Controls whether the interface will be used as a gateway for requests.

Only one interface can be set as Gateway at the same time.

 

 

Returns:

1

- Success.

0

- Interface not available or not supported.

-2

- Illegal network interface.

-3

- Illegal parameter.

-4

- Another interface is set as gateway.

 

 

Declaration:

FUNCTION netSetNATParam;
VAR_INPUT
   Iface      : MANDATORY SINT;
   Forward    : BOOL := FALSE;
   Gateway    : BOOL := FALSE;
END_VAR;

 

 

Example:

INCLUDE rtcu.inc
 
VAR
   ap   : netGetAPParam;
   dhcp : netGetDHCPParam;
   lan  : netGetLANParam;
   nat  : netGetNATParam;
   wpa  : netWLANSecurityWPA;
END_VAR;
 
FUNCTION booltostr : STRING;
VAR_INPUT
  v : BOOL;
END_VAR;
IF v THEN booltostr := "Yes"; ELSE booltostr := "No"; END_IF;
END_FUNCTION
 
FUNCTION setup_lan;
 
   // Configure LAN
   netSetLANParam(iface := 2DHCP := TRUEAutoDNS := TRUE);
 
   // Configure NAT
   netSetNATParam(iface := 2forward := FALSEgateway := TRUE);
 
END_FUNCTION;
 
FUNCTION setup_ap;
 
   // Configure Access Point
   wpa.phrase               := "pass phrase";
   netSetAPParam(
                 ssid       := "RTCU network",
                 sec_config := ADDR(wpa),
                 hidden     := FALSE,
                 chnl       := 1,
                 Address    := sockIPFromName(str := "192.168.1.1"),
                 Subnet     := sockIPFromName(str := "255.255.255.0")
                );
 
   // Configure NAT
   netSetNATParam(iface := 5forward := TRUEgateway := FALSE);
 
   // Configure DHCP
   netSetDHCPParam(
                   iface    := 5,
                   enable   := ON,
                   time     := 24,
                   first    := sockIPFromName(str := "192.168.1.100"),
                   last     := sockIPFromName(str := "192.168.1.200"),
                   dns_type := 1,
                   applynow := TRUE
                  );
 
END_FUNCTION;
 
FUNCTION show_lan;
 
   // Show
   DebugMsg(message := "===== LAN =====");
 
   // Show LAN setup
   lan(iface := 2);
   DebugMsg(message := " Network=      IPv4");
   DebugMsg(message := "   DHCP=           " + booltostr(v := lan.dhcp));
   DebugMsg(message := "   IP=             " + sockIPToName(ip := lan.ip));
   DebugMsg(message := "   Subnet=         " + sockIPToName(ip := lan.SubnetMask));
   DebugMsg(message := "   Gw=             " + sockIPToName(ip := lan.Gateway));
   DebugMsg(message := "   Auto DNS=       " + booltostr(v := lan.AutoDNS));
   DebugMsg(message := "   DNS=            " + sockIPToName(ip := lan.DNS1));
   DebugMsg(message := "   DNS=            " + sockIPToName(ip := lan.DNS2));
 
   // Show NAT setup
   nat(iface := 2);
   DebugMsg(message := " NAT");
   DebugMsg(message := "   forward=        " + booltostr(v := nat.forward));
   DebugMsg(message := "   gateway=        " + booltostr(v := nat.gateway));
 
END_FUNCTION;
 
FUNCTION show_ap;
 
   // Show
   DebugMsg(message := "===== Access Point =====");
 
   // Show AP setup
   ap();
   DebugMsg(message := " SSID=         " + ap.ssid);
   IF ap.security = 0 THEN
      DebugMsg(message := " Security=     None");
   ELSIF ap.security = 1 THEN
      DebugFmt(message := " Security=     WPA/WPA2 PSK");
      netGetAPSecurity(sec_config := ADDR(wpa));
      DebugMsg(message := "   phrase=         " + wpa.phrase);
   ELSE
      DebugFmt(message := " Security=     Unknown (\1)", v1 := ap.security);
   END_IF;
   DebugMsg(message := " Network=      IPv4");
   DebugMsg(message := "   Address=        " + sockIPToName(ip := ap.Address));
   DebugMsg(message := "   Subnet=         " + sockIPToName(ip := ap.Subnet));
 
   // Show NAT setup
   nat(iface := 5);
   DebugMsg(message := " NAT");
   DebugMsg(message := "   forward=        " + booltostr(v := nat.forward));
   DebugMsg(message := "   gateway=        " + booltostr(v := nat.gateway));
 
   // Show DHCP setup
   dhcp(iface := 5);
   DebugMsg(message := " DHCP");
   DebugMsg(message := "   enable=         " + booltostr(v := dhcp.enable));
   DebugFmt(message := "   lease time=     \1 Hours", v1 := dhcp.time);
   DebugMsg(message := "   subnet=         " + sockIPToName(ip := dhcp.Subnet));
   DebugMsg(message := "   range, start=   " + sockIPToName(ip := dhcp.first));
   DebugMsg(message := "   range, end=     " + sockIPToName(ip := dhcp.last));
   IF dhcp.dns_type = 1 THEN
      DebugMsg(message := "   DNS type=       Self/Auto");
   ELSIF dhcp.dns_type = 2 THEN
      DebugMsg(message := "   DNS type=       Static");
   ELSE
      DebugFmt(message := "   DNS type=       Unknown (\1)", v1 := dhcp.dns_type);
   END_IF;
   DebugMsg(message := "   DNS=            " + sockIPToName(ip := dhcp.DNS1));
   DebugMsg(message := "   DNS=            " + sockIPToName(ip := dhcp.DNS2));
 
END_FUNCTION;
 
PROGRAM example;
 
// Setup
setup_lan();
setup_ap();
 
// Show
show_lan();
show_ap();
 
// Start
netOpen(iface := 2);
netOpen(iface := 5);
 
BEGIN
  // ...
END;
END_PROGRAM;