Patch title: Release 91 bulk changes
Abstract:
File: /linux/network/net.pli
Key:
    Removed line
    Added line
   
abstract
  [This module will give you the ability to deal with Linux 



module "/pliant/language/os.pli"
module "/pliant/language/os/socket.pli"
module "/pliant/language/stream.pli"
module "/pliant/admin/execute.pli"
abstract
  [This module will give you the ability to deal with Linux 



module "/pliant/language/os.pli"
module "/pliant/language/os/socket.pli"
module "/pliant/language/stream.pli"
module "/pliant/admin/execute.pli"
module "/pliant/linux/kernel/module.pli"


function net_rule_2_2 cmd
  arg Str cmd
  if (constant (file_query "file:/bin/iptables" standard)=un
    # console "    ipchains " cmd eol
    execute "ipchains "+cmd
  
function net_rule_2_4 cmd
  arg Str cmd
  if (constant (file_query "file:/bin/iptables" standard)=de
    # console "    iptables " cmd eol
    execute "iptables "+cmd
  
function net_rule cmd
  arg Str cmd
  if (constant (file_query "file:/bin/iptables" standard)=de
    # console "    iptables " cmd eol
    execute "iptables "+cmd
  else
    # console "    ipchains " cmd eol
    execute "ipchains "+(replace cmd "DROP" "REJECT")
    
function net_optimize options
  arg Str options


function net_rule_2_2 cmd
  arg Str cmd
  if (constant (file_query "file:/bin/iptables" standard)=un
    # console "    ipchains " cmd eol
    execute "ipchains "+cmd
  
function net_rule_2_4 cmd
  arg Str cmd
  if (constant (file_query "file:/bin/iptables" standard)=de
    # console "    iptables " cmd eol
    execute "iptables "+cmd
  
function net_rule cmd
  arg Str cmd
  if (constant (file_query "file:/bin/iptables" standard)=de
    # console "    iptables " cmd eol
    execute "iptables "+cmd
  else
    # console "    ipchains " cmd eol
    execute "ipchains "+(replace cmd "DROP" "REJECT")
    
function net_optimize options
  arg Str options
  # standard protocol does not work great on the Internet
  tcp_setting "tcp_timestamps" "0"
  # standard protocol does not work great on the Internet, but let's keep it
  if (options option "tcp_timestamps" Bool true)=false
    tcp_setting "tcp_timestamps" "0"
  # dead connections will be closed within 15 minutes
  tcp_setting "tcp_keepalive_time" "180"
  tcp_setting "tcp_keepalive_probes" "5"
  if (options option "forward")
    tcp_setting "ip_forward" "1"
    tcp_setting "ip_always_defrag" "1"
  net_rule "-F"
  net_rule_2_4 "-t nat -F"


function net_filter action device inside outside
  arg Str action device inside outside
  # possible actions: internet nat filter
  if (constant (file_query "file:/bin/iptables" standard)=de
  # dead connections will be closed within 15 minutes
  tcp_setting "tcp_keepalive_time" "180"
  tcp_setting "tcp_keepalive_probes" "5"
  if (options option "forward")
    tcp_setting "ip_forward" "1"
    tcp_setting "ip_always_defrag" "1"
  net_rule "-F"
  net_rule_2_4 "-t nat -F"


function net_filter action device inside outside
  arg Str action device inside outside
  # possible actions: internet nat filter
  if (constant (file_query "file:/bin/iptables" standard)=de
    execute "insmod ip_tables" quiet
    execute "insmod iptable_filter" quiet
    # execute "insmod ipt_REJECT" quiet
    kernel_load_module "ip_tables"
    kernel_load_module "iptable_filter"
    # kernel_load_module "ipt_REJECT"
  if action="nat"
    if (constant (file_query "file:/bin/iptables" standard)=
  if action="nat"
    if (constant (file_query "file:/bin/iptables" standard)=
      execute "insmod ip_conntrack" quiet
      execute "insmod iptable_nat" quiet
      execute "insmod ipt_MASQUERADE" quiet
      kernel_load_module "ip_conntrack"
      kernel_load_module "iptable_nat"
      kernel_load_module "ipt_MASQUERADE"
    net_rule_2_2 "-A forward -i "+device+" -j MASQ"
    net_rule_2_4 "-t nat -A POSTROUTING -o "+device+" -j MAS
  if action="internet" or action="nat" or (action="filter" a
    net_rule "-N "+device+"in"
    net_rule_2_2 "-A input -i "+device+" -j "+device+"in"
    net_rule_2_4 "-A INPUT -i "+device+" -j "+device+"in"
    net_rule_2_4 "-A FORWARD -i "+device+" -j "+device+"in"
    if action="internet" or action="nat"
      net_rule "-A "+device+"in -p udp --destination-port 11
      net_rule "-A "+device+"in -p tcp --destination-port 11
      net_rule "-A "+device+"in -p udp --destination-port 13
      net_rule "-A "+device+"in -p tcp --destination-port 13
      # net_rule "-A "+device+"in -p tcp --destination-port 
      net_rule "-A "+device+"in -p udp --destination-port 54
      net_rule "-A "+device+"in -p tcp --destination-port 54
      net_rule "-A "+device+"in -p tcp --destination-port 60
    var Str all := outside
    while all<>""
      if not (all parse any:(var Str first) _ any:(var Str r
        first := all ; remain := ""
      if (first parse "-" any:(var Str exclude))
        net_rule "-A "+device+"in --destination "+exclude+" 
      else
        net_rule "-A "+device+"in --destination "+first+" -j
      all := remain
    if action="internet" or action="nat"
      # no access from the Internet to the internal network
      # usefull for security if ISP is broken
      # ... but broken if using NAT
      void # net_rule "-A "+device+"in -d 10.0.0.0/255.0.0.0
    net_rule_2_2 "-A "+device+"in -j "+(shunt action="intern
    if action="filter"
      net_rule_2_4 "-A "+device+"in -j DROP"
  if action="internet" or action="nat" or (action="filter" a
    net_rule "-N "+device+"out"
    net_rule_2_2 "-A output -i "+device+" -j "+device+"out"
    net_rule_2_4 "-A OUTPUT -o "+device+" -j "+device+"out"
    net_rule_2_4 "-A FORWARD -o "+device+" -j "+device+"out"
    var Str all := inside
    while all<>""
      if not (all parse any:(var Str first) _ any:(var Str r
        first := all ; remain := ""
      if (first parse "-" any:(var Str exclude))
        net_rule "-A "+device+"out --destination "+exclude+"
      else
        net_rule "-A "+device+"out --destination "+first+" -
      all := remain
    if action="internet" or action="nat"
      # don't route any internal network traffic to the Inte
      # usefull because the (ISDN) Linux routing table are n
      net_rule "-A "+device+"out -d 10.0.0.0/255.0.0.0 -j DR
    net_rule_2_2 "-A "+device+"out -j "+(shunt action="inter
    if action="filter"
      net_rule_2_4 "-A "+device+"out -j DROP"


    net_rule_2_2 "-A forward -i "+device+" -j MASQ"
    net_rule_2_4 "-t nat -A POSTROUTING -o "+device+" -j MAS
  if action="internet" or action="nat" or (action="filter" a
    net_rule "-N "+device+"in"
    net_rule_2_2 "-A input -i "+device+" -j "+device+"in"
    net_rule_2_4 "-A INPUT -i "+device+" -j "+device+"in"
    net_rule_2_4 "-A FORWARD -i "+device+" -j "+device+"in"
    if action="internet" or action="nat"
      net_rule "-A "+device+"in -p udp --destination-port 11
      net_rule "-A "+device+"in -p tcp --destination-port 11
      net_rule "-A "+device+"in -p udp --destination-port 13
      net_rule "-A "+device+"in -p tcp --destination-port 13
      # net_rule "-A "+device+"in -p tcp --destination-port 
      net_rule "-A "+device+"in -p udp --destination-port 54
      net_rule "-A "+device+"in -p tcp --destination-port 54
      net_rule "-A "+device+"in -p tcp --destination-port 60
    var Str all := outside
    while all<>""
      if not (all parse any:(var Str first) _ any:(var Str r
        first := all ; remain := ""
      if (first parse "-" any:(var Str exclude))
        net_rule "-A "+device+"in --destination "+exclude+" 
      else
        net_rule "-A "+device+"in --destination "+first+" -j
      all := remain
    if action="internet" or action="nat"
      # no access from the Internet to the internal network
      # usefull for security if ISP is broken
      # ... but broken if using NAT
      void # net_rule "-A "+device+"in -d 10.0.0.0/255.0.0.0
    net_rule_2_2 "-A "+device+"in -j "+(shunt action="intern
    if action="filter"
      net_rule_2_4 "-A "+device+"in -j DROP"
  if action="internet" or action="nat" or (action="filter" a
    net_rule "-N "+device+"out"
    net_rule_2_2 "-A output -i "+device+" -j "+device+"out"
    net_rule_2_4 "-A OUTPUT -o "+device+" -j "+device+"out"
    net_rule_2_4 "-A FORWARD -o "+device+" -j "+device+"out"
    var Str all := inside
    while all<>""
      if not (all parse any:(var Str first) _ any:(var Str r
        first := all ; remain := ""
      if (first parse "-" any:(var Str exclude))
        net_rule "-A "+device+"out --destination "+exclude+"
      else
        net_rule "-A "+device+"out --destination "+first+" -
      all := remain
    if action="internet" or action="nat"
      # don't route any internal network traffic to the Inte
      # usefull because the (ISDN) Linux routing table are n
      net_rule "-A "+device+"out -d 10.0.0.0/255.0.0.0 -j DR
    net_rule_2_2 "-A "+device+"out -j "+(shunt action="inter
    if action="filter"
      net_rule_2_4 "-A "+device+"out -j DROP"