netGetDHCPParam (Functionblock)

Top  Previous  Next

Architecture:

NX32L

Device support:

All

Firmware version:

1.50.00


This function will read out the DHCP parameters for the network interface previously set by the netSetDHCPParam function.

 

 

Input:

Iface : SINT

The network interface. (See Network)

 

 

Output:

Status : SINT

1

- Success.

0

- Interface not available or not supported.

-1

- Illegal network interface.

 

Enable : BOOL

Determines whether the DHCP service is enabled.

 

Time : INT

The lease time in hours.

 

First : DINT

The first IP address in the range of dynamic IP addresses.

 

Last : DINT

The last IP address in the range of dynamic IP addresses.

 

DNS_type : SINT

1

- The device is used as a DNS server. Requests are forwarded to the DNS servers from the NAT gateway interface.

2

- Static DNS servers are used.

 

DNS1 : DINT

The IP address of the primary DNS server. (only used when dns_type = 2)

 

DNS2 : DINT

The IP address of the secondary DNS server. (only used when dns_type = 2)

 

 

Declaration:

FUNCTION_BLOCK netGetDHCPParam;
VAR_INPUT
  Iface      : SINT;
END_VAR;
VAR_OUTPUT
  Status     : SINT;
  Enable     : BOOL;
  Time       : INT;
  First      : DINT;
  Last       : DINT;
  DNS_type   : SINT;
  DNS1       : DINT;
  DNS2       : DINT;
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 := 2, DHCP := TRUE, AutoDNS := TRUE);
 
  // Configure NAT
  netSetNATParam(iface := 2, forward := FALSE, gateway := 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 := 5, forward := TRUE, gateway := 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 := "   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;