This document details the entry points you can call without the DrakX graohical
toolkit. First, the general variables you will encounter further. If you don't
know wht a variable is, look here. Any additional locally variables are
commented 'in place'

------------------------------
Special types (in upper cases)
------------------------------
 DB_FILE : file storing the ISDN ISP database. see share/isdndb.txt : file of lines in 'Unlisted - edit manually' or /^(.*)\|(.*)\|(.*)=>([0-9]*)=>(.*)=>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})=>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/ where $1=Land $2=City $3=ISP_name $4=phone_number $5=hostname $6=dns1 $7=dns2

---------------------------------------------------------------------------------------
Summary of common variables used (local variables are described in the function itself)
---------------------------------------------------------------------------------------
notation : keys : description : type : format (regexp or enumeration. `...' means it's not exhaustive
 $prefix : prefix path (empty in post-install) : string : path
 $isLaptop : flag for laptop : boolean or int : guess
 $isdn : hash table containing isdn infos
  $isdn->{login} : cnx login : string
  $isdn->{passwd} : cnx passwd : string
  $isdn->{phone_in} : user phone : /^[0-9]*$/
  $isdn->{phone_out} : ISP phone : /^[0-9]*$/
  $isdn->{dialing_mode} : dialing mode : "auto" or "manual"
  $isdn->{driver} : driver used for the card : "hisax" or "b1pci" or ...
  $isdn->{type} : type of card, used for the driver, see netconnect_consts : integer : /^[1-22]|[24-37]$/
  $isdn->{irq} : irq of the ISA card : integer |
  $isdn->{mem} : mem of the ISA card : string  |
  $isdn->{io} : io of the ISA card : string    | see netconnect_consts for examples.
  $isdn->{io0} : io0 of the ISA card : string  |
  $isdn->{io1} : i01 of the ISA card : string  |
  $isdn->{idl} : amount of time after the cnx times out in secs : int
  $isdn->{user_name} : not used anymore. Not explicit. It represented the name of the connexion.
  $isdn->{card_type} : card type : string : "isa" or "pci" or "pcmcia"
  $isdn->{protocol} : cnx protocol : int : 1|2|3 : 1 for old german specific (not used anymore), 2 for europe, 3 for rest of the world
  $isdn->{id} : card id. Associated with vendor, identify strictly the card. see pcitable : integer
  $isdn->{description} : card description from pcitable : string
  $isdn->{vendor} : card vendor : integer
  $isdn->{passwd2} : passwd verification : string
 $modem : hash table containing modem infos
  $modem->{device} : device of the modem : string : /ttyS[0-9]/
 $adsl : hash table containing modem infos
  $adsl->{login} : cnx login : string
  $adsl->{passwd} : cnx passwd : string
  $adsl->{atboot} : 
 $netc : hash table containing system-wide networking infos (maybe not true, correct this) : 
  $netc->{NET_DEVICE}
  $netc->{dnsServer2}
  $netc->{dnsServer3}
  $netc->{DOMAINNAME2}
  $netc->{NET_INTERFACE} is set to "ppp0"
 $in : interactive object

------------
Entry points
------------

isdn_write_config_backend : write isdn info, only for ippp0 -> ask_connect_now
input :
 $prefix
 $isdn
$isdn input:
 $isdn->{login} $isdn->{passwd} $isdn->{phone_in} $isdn->{phone_out} $isdn->{dialing_mode}
 $isdn->{driver} $isdn->{type} $isdn->{irq} $isdn->{mem} $isdn->{io} $isdn->{io0} $isdn->{io1}

write_secret_backend : write login and passwd into /etc/ppp/{chap, pap}-secrets. Replace old passwd only if same login
input :
 $a : login : string : /^.*$/
 $b : passwd : string : /^.*$/

connect_backend : launch the cnx script
input : $prefix

connect_backend : launch the cnx script
input : $prefix

read_providers_backend : build the tree of isdn ISP
input :
 $file : 1st location of the file : ISDN_DB_FILE
 $file2 : 2nd location of the file : ISDN_DB_FILE
output : the list of ISP : array of strings : array of /^(.*)\|(.*)\|(.*)$/ where $1=Land $2=City $3=ISP_name

get_info_isdn_backend : fills the infos from the line of the tree returned into $isdn and $netc
input :
 $isdn
 $netc
 $name : the line choosen in the tree of ISP : string : /^(.*)\|(.*)\|(.*)$/ with $1=Land $2=City $3=ISP_name
 $file : 1st location of the file : ISDN_DB_FILE
 $file2 : 2nd location of the file : ISDN_DB_FILE
$isdn ouput
 $isdn->{user_name}, $isdn->{phone_out}, $netc->{DOMAINNAME2}, $netc->{dnsServer2}, $netc->{dnsServer3},
$netc output
 $netc->{DOMAINNAME2}, $netc->{dnsServer2}, $netc->{dnsServer3}

isdn_detect_backend : detects isdn pci card and fills the infos in $isdn : only detects one card
input
 $isdn
$isdn output:
 $isdn->{description} $isdn->{vendor} $isdn->{id} $isdn->{driver} $isdn->{card_type} $isdn->{type}

isdn_get_list : return isdn cards descriptions list. This function is not use internally.
output : descriptions : list of strings

isdn_get_info : return isdn card infos. This function is not use internally.
input : the description of the card (see isdn_get_list)
output : a reference on the decription of the card. : ref on a hash(description,type,irq,mem,io,io0,io1card,)

conf_network_card_backend : configure the network cards and return the list of them, or configure one specified interface : WARNING, you have to setup the ethernet cards, by calling setup_thiskind($in, 'net', !$::expert, 1) or setup_thiskind_backend before calling this function. Basically, you call this function in 2 times.
input
 $prefix
 $netc
 $intf
 $type : type of interface, must be given if $interface is : string : "static" or "dhcp"
 $interface : facultative, if given, set this interface and return it in a proper form. If not, return @all_cards
 $ipadr : facultative, ip address of the interface : string
 $netadr : facultative, netaddress of the interface : string
when $interface is given, informations are written in $intf and $netc. If not, @all_cards is returned.
$intf output: $device is the result of
 $intf->{$device}->{DEVICE} : which device is concerned : $device is the result of $interface =~ /(eth[0-9]+)/; my $device = $1;;
 $intf->{$device}->{BOOTPROTO} : $type
 $intf->{$device}->{NETMASK} : '255.255.255.0'
 $intf->{$device}->{NETWORK} : $netadr
 $intf->{$device}->{ONBOOT} : "yes"
$netc output:
 $netc->{nb_cards} : nb of ethernet cards
 $netc->{NET_DEVICE} : this is used to indicate that this eth card is used to connect to internet : $device
output:
 $all_cards : a list of a list ( (eth1, module1), ... , (ethn, modulen)). Pass the ethx as $interface in further call.
 $device : only returned in case $interface was given it's $interface, but filtered by /eth[0-9+]/ : string : /eth[0-9+]/

adsl_conf_backend : write adsl configuration
input :
 $prefix
 $adsl
 $netc
 $adsl_type : type of cnx : string : "pptp" or "pppoe"
$adsl input:
 $adsl->{login}, $adsl->{passwd}, $adsl->{atboot}
$netc input:
 $netc->{NET_DEVICE}
 $netc->{dnsServer2}
 $netc->{dnsServer3}
 $netc->{DOMAINNAME2}
$netc output:
 $netc->{NET_INTERFACE} is set to "ppp0"

modem_detect_backend : detects modem on serial ports and fills the infos in $modem : detects only one card
input
 $modem
 $mouse : facultative, hash containing device to exclude not to test mouse port : ( device => /ttyS[0-9]/ )
output:
 $modem->{device} : device where the modem were detected

get_net_device : return the device choosen for the net cnx
no input
output : name of the internet device.

read_net_conf : read the information stored in $prefix/etc/sysconfig/draknet and $prefix/etc/sysconfig/draknet.`type`
input:
 $prefix
 $netcnx
 $netc

set_net_conf : set the information from netcnx in $prefix/etc/sysconfig/draknet and $prefix/etc/sysconfig/draknet.`type`
 $prefix
 $netcnx
 $netc : useless! REMOVE ME