lcrzo_conf(3)

NAME
lcrzo_conf - bibliotheque lcrzo : configuration (arp, devices, routes)

CONTENU
/*    Bibliotheque reseau de Laurent Constantin (lcrzo)
                 Module lcrzo_conf
  Les fonctions presentes dans ce module permettent d'obtenir des
informations sur la machine locale.
*/
/*-------------------------------------------------------------*/
/***************************************************************
 * Note sur lcrzo_conf :                                       *
 * La configuration obtenue par ce module est une copie de la  *
 * configuration de la machine locale. L'utilisateur peut par  *
 * la suite la modifier avec les fonctions "xx_add" et         *
 * "xx_del" : la configuration de lcrzo est changee, mais pas  *
 * celle de l'ordinateur.                                      *
 * Par exemple la configuration de la machine locale peut etre *
 * (obtenu par lcrzo_conf_print) :                             */
/*
Devices
  device  ethernet          ip          /netmask        mtu
  lo      00:00:00:00:00:00 127.0.0.1   /255.0.0.0      3924 up
  eth0    00:00:33:AC:C2:24 192.168.1.1 /255.255.255.0  1500 up
  eth0:1  00:00:33:AC:C2:24 192.168.2.1 /255.255.255.0  1500 up,alias
  eth1    00:00:43:BC:D2:34 192.168.3.1 /255.255.255.0  1500 up
Arp
  lo      00:00:00:00:00:00 127.0.0.1     (permanent)
  eth0    00:00:33:AC:C2:24 192.168.1.1   (permanent)
  eth0:1  00:00:33:AC:C2:24 192.168.2.1   (permanent)
  eth1    00:00:43:BC:D2:34 192.168.3.1   (permanent)
  eth0    12:34:56:78:90:ab 192.168.1.254 (-1s)
Routes
  device  destination  /netmask         ip_source     gateway
  lo      127.0.0.1    /255.255.255.255 local_device                 0,up
  eth0    192.168.1.1  /255.255.255.255 local_device                 0,up
  eth0:1  192.168.2.1  /255.255.255.255 local_device                 0,up
  eth1    192.168.3.1  /255.255.255.255 local_device                 0,up
  eth0    192.168.1.0  /255.255.255.0   192.168.1.1                  0,up
  eth0:1  192.168.2.0  /255.255.255.0   192.168.2.1                  0,up
  eth1    192.168.3.0  /255.255.255.0   192.168.3.1                  0,up
  lo      127.0.0.0    /255.0.0.0       127.0.0.1                    0,up
  eth0    0.0.0.0      /0.0.0.0         192.168.1.1   192.168.1.254  0,up
 ***************************************************************/
/***************************************************************
 * Les fonctions lcrzo_conf_xxx_del_system permettent          *
 * d'effacer les configurations non voulues du systeme local.  *
 * Par exemple,                                                *
 *  avant :                                                    *
 *    device eth0...                                           *
 *    device eth1...                                           *
 *  apres lcrzo_conf_device_del_system("eth0", ...)            *
 *    device eth1...                                           *
 *                                                             *
 * Les fonctions lcrzo_conf_xxx_add_user permettent d'ajouter  *
 * une configuration d'utilisateur qui peut etre prioritaire   *
 * (ou non) sur la configuration systeme. Par exemple,         *
 *  avant :                                                    *
 *    device eth0 a...                                         *
 *    device eth1 b...                                         *
 *  apres lcrzo_conf_devices_add_user(TRUE, "eth0", c...) et   *
 *  lcrzo_conf_devices_add_user(FALSE, "eth1", d...)           *
 *    device eth0 c...                                         *
 *    device eth1 b... (ne voit pas le choix de l'utilisateur) *
 *                                                             *
 * Les fonctions lcrzo_conf_xxx_del_user permettent d'enlever  *
 * une configuration ajoutee par l'utilisateur.                *
 ***************************************************************/
/*-------------------------------------------------------------*/
/* Nom : lcrzo_conf_fprint
   Description :
     Affiche la configuration de lcrzo.
   Parametre(s) d'entree :
     *pf : FILE ou la fonction doit ecrire
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_fprint(LCRZOFILE *pf);
#define lcrzo_conf_print() lcrzo_conf_fprint(stdout)
/*-------------------------------------------------------------*/
/* Nom : lcrzo_conf_devices_add_user
   Description :
     Ajoute un device a la configuration de lcrzo.
   Parametre(s) d'entree :
     priorityoversystem : si cette configuration doit etre
                          prioritaire sur celle du systeme
     device : nom du device
     etha : adresse Ethernet du device
     ipl : adresse IP du device
     netmask : masque reseau du device
     mtu : mtu du device
     isup : si le device est actif
     isanalias : si le device est un alias
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_devices_add_user(lcrzo_bool priorityoversystem,
                                lcrzo_constdevice device,
			        lcrzo_constetha etha,
			        lcrzo_ipl ipl,
			        lcrzo_ipl netmask,
			        lcrzo_uint32 mtu,
			        lcrzo_bool isup,
			        lcrzo_bool isanalias);
/* Nom : lcrzo_conf_devices_del_xxx
   Description :
     Enleve un device de la configuration (systeme ou
     utilisateur) de lcrzo.
   Parametre(s) d'entree :
     device : nom du device
     etha : adresse Ethernet du device
     ipl : adresse IP du device
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_devices_del_system(lcrzo_constdevice device,
			          lcrzo_constetha etha,
			          lcrzo_ipl ipl);
int lcrzo_conf_devices_del_user(lcrzo_constdevice device,
			        lcrzo_constetha etha,
			        lcrzo_ipl ipl);
/* Nom : lcrzo_conf_devices_count
   Description :
     Compte le nombre de devices
   Parametre(s) d'entree :
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *pcount : nombre de devices
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_devices_count(lcrzo_int32 *pcount);
/**********************************************
 * Note sur les positions :                   *
 * Attention : 0 n'est pas une valeur valide  *
 * Voici des valeurs de position possibles :  *
 *  +1 : premier element                      *
 *  +2 : deuxieme element                     *
 *  ...                                       *
 * De plus, on peut partir de la fin :        *
 *  -1 : dernier element                      *
 *  -2 : avant dernier element                *
 *  ...                                       *
 **********************************************/
/* Nom : lcrzo_conf_devices_value_pos
   Description :
     Fournit le device situe a la position voulue
   Parametre(s) d'entree :
     pos : position du device cherche (cf. le cadre
            ci-dessus pour connaitre les valeurs valides)
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     device : nom du device
     etha : adresse Ethernet du device
     *pipl : adresse IP du device
     *pnetmask : masque reseau du device
     *pmtu : mtu du device
     *pisup : si le device est actif
     *pisanalias : si le device est un alias
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_devices_value_pos(lcrzo_int32 pos,
				 lcrzo_device device,
				 lcrzo_etha etha,
				 lcrzo_ipl *pipl,
				 lcrzo_ipl *pnetmask,
				 lcrzo_uint32 *pmtu,
				 lcrzo_bool *pisup,
				 lcrzo_bool *pisanalias);
/* Nom : lcrzo_conf_devices_fprint
   Description :
     Affiche la configuration des devices de lcrzo.
   Parametre(s) d'entree :
     *pf : FILE ou la fonction doit ecrire
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_devices_fprint(LCRZOFILE *pf);
#define lcrzo_conf_devices_print() lcrzo_conf_devices_fprint(stdout)
/*-------------------------------------------------------------*/
/* Nom : lcrzo_conf_arp_add_user
   Description :
     Ajoute une entree ARP a la configuration de lcrzo.
   Parametre(s) d'entree :
     priorityoversystem : si cette configuration doit etre
                          prioritaire sur celle du systeme
     device : nom du device
     etha : adresse Ethernet
     ipl : adresse IP
     ispermanent : si cette entree arp est permanente
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_arp_add_user(lcrzo_bool priorityoversystem,
                            lcrzo_constdevice device,
		            lcrzo_constetha etha,
		            lcrzo_ipl ipl,
		            lcrzo_bool ispermanent);
/* Nom : lcrzo_conf_arp_add_xxx
   Description :
     Enleve une entree ARP de la configuration (systeme ou
     utilisateur) de lcrzo.
   Parametre(s) d'entree :
     device : nom du device
     etha : adresse Ethernet
     ipl : adresse IP
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_arp_del_system(lcrzo_constdevice device,
		              lcrzo_constetha etha,
		              lcrzo_ipl ipl);
int lcrzo_conf_arp_del_user(lcrzo_constdevice device,
		            lcrzo_constetha etha,
		            lcrzo_ipl ipl);
/* Nom : lcrzo_conf_arp_count
   Description :
     Compte le nombre d'entrees arp
   Parametre(s) d'entree :
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *pcount : nombre d'entrees
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_arp_count(lcrzo_int32 *pcount);
/* Nom : lcrzo_conf_arp_value_pos
   Description :
     Fournit l'entree arp situee a la position voulue
   Parametre(s) d'entree :
     pos : position de l'entree arp voulue
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     device : nom de device
     etha : adresse Ethernet
     *pipl : adresse IP
     *pispermanent : si cette entree est permanente
     *ptimeset : heure a laquelle cette entree a ete ajoutee
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_arp_value_pos(lcrzo_int32 pos,
			     lcrzo_device device,
			     lcrzo_etha etha,
			     lcrzo_ipl *pipl,
			     lcrzo_bool *pispermanent,
			     lcrzo_uint32 *ptimeset);
/* Nom : lcrzo_conf_arp_fprint
   Description :
     Affiche la configuration arp de lcrzo.
   Parametre(s) d'entree :
     *pf : FILE ou la fonction doit ecrire
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_arp_fprint(LCRZOFILE *pf);
#define lcrzo_conf_arp_print() lcrzo_conf_arp_fprint(stdout)
/*-------------------------------------------------------------*/
/* Nom : lcrzo_conf_route_add_ser
   Description :
     Ajoute une route a la configuration de lcrzo.
   Parametre(s) d'entree :
     priorityoversystem : si cette configuration doit etre
                          prioritaire sur celle du systeme
     device : nom du device
     dest/mask : adresse IP/masque de la route voulue
     ipsource : adresse IP source a employer (si 0, device local)
     gateway : routeur a employer (si 0, dest est sur le LAN)
     isup : si cette route est active
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_routes_add_user(lcrzo_bool priorityoversystem,
                               lcrzo_constdevice device,
			       lcrzo_ipl dest,
			       lcrzo_ipl mask,
			       lcrzo_ipl ipsource,
			       lcrzo_ipl gateway,
                               lcrzo_uint32 metric,
			       lcrzo_bool isup);
/* Nom : lcrzo_conf_routes_del_xxx
   Description :
     Enleve une route de la configuration (systeme ou
     utilisateur) de lcrzo.
   Parametre(s) d'entree :
     dest/mask : adresse IP/masque de la route
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_routes_del_system(lcrzo_ipl dest,
			         lcrzo_ipl mask,
			         lcrzo_ipl gateway);
int lcrzo_conf_routes_del_user(lcrzo_ipl dest,
			       lcrzo_ipl mask,
			       lcrzo_ipl gateway);
/* Nom : lcrzo_conf_routes_count
   Description :
     Compte le nombre de routes
   Parametre(s) d'entree :
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *pcount : nombre de routes
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_routes_count(lcrzo_int32 *pcount);
/* Nom : lcrzo_conf_routes_value_pos
   Description :
     Fournit la route situee a la position voulue
   Parametre(s) d'entree :
     pos : position de la route voulue
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     device : nom de device
     *pdest : adresse IP destination
     *pmask : masque destination
     *pipsource : adresse IP source a employer
     *pgateway : routeur a employer
     *pisup : si cette route est active
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_routes_value_pos(lcrzo_int32 pos,
				lcrzo_device device,
				lcrzo_ipl *pdest,
				lcrzo_ipl *pmask,
				lcrzo_ipl *pipsource,
				lcrzo_ipl *pgateway,
                                lcrzo_uint32 *pmetric,
				lcrzo_bool *pisup);
/* Nom : lcrzo_conf_routes_fprint
   Description :
     Affiche la configuration de routage de lcrzo.
   Parametre(s) d'entree :
     *pf : FILE ou la fonction doit ecrire
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_conf_routes_fprint(LCRZOFILE *pf);
#define lcrzo_conf_routes_print() lcrzo_conf_routes_fprint(stdout)
/*-------------------------------------------------------------*/
/***************************************************************
 * Note sur les fonctions suivantes :                          *
 * Les valeurs par defaut sont correctes pour la majorite des  *
 * applications.                                               *
 * Vous ne devriez modifier les parametres que si vous savez   *
 * ce que vous faites.                                         *
 ***************************************************************/
/* pour permettre la mise a jour de la configuration */
int lcrzo_conf_set_sysrenew_allow(lcrzo_bool yes);
int lcrzo_conf_set_sysrenew_allow_devices(lcrzo_bool yes);
int lcrzo_conf_set_sysrenew_allow_arpperm(lcrzo_bool yes);
int lcrzo_conf_set_sysrenew_allow_arpcache(lcrzo_bool yes);
int lcrzo_conf_set_sysrenew_allow_routes(lcrzo_bool yes);
int lcrzo_conf_get_sysrenew_allow(lcrzo_bool *pyes);
int lcrzo_conf_get_sysrenew_allow_devices(lcrzo_bool *pyes);
int lcrzo_conf_get_sysrenew_allow_arpperm(lcrzo_bool *pyes);
int lcrzo_conf_get_sysrenew_allow_arpcache(lcrzo_bool *pyes);
int lcrzo_conf_get_sysrenew_allow_routes(lcrzo_bool *pyes);
/* duree de vie des entrees permanentes au bout de laquelle
     celle-ci doivent etre mises a jour */
int lcrzo_conf_set_permentriesperiod(lcrzo_uint32 period);
int lcrzo_conf_get_permentriesperiod(lcrzo_uint32 *pperiod);
/* duree de vie des entrees mises en cache */
int lcrzo_conf_set_cacheentriestimeout(lcrzo_uint32 timeout);
int lcrzo_conf_get_cacheentriestimeout(lcrzo_uint32 *ptimeout);
/*-------------------------------------------------------------*/
/* pour forcer la mise a jour de la configuration systeme */
int lcrzo_conf_renewnow_system(void);
int lcrzo_conf_devices_renewnow_system(void);
int lcrzo_conf_arpperm_renewnow_system(void);
int lcrzo_conf_arpcache_renewnow_system(void);
int lcrzo_conf_routes_renewnow_system(void);
/*-------------------------------------------------------------*/
/* purge la configuration systeme/utilisateur */
int lcrzo_conf_flush_system(void);
int lcrzo_conf_devices_flush_system(void);
int lcrzo_conf_arpperm_flush_system(void);
int lcrzo_conf_arpcache_flush_system(void);
int lcrzo_conf_routes_flush_system(void);
int lcrzo_conf_flush_user(void);
int lcrzo_conf_devices_flush_user(void);
int lcrzo_conf_arpperm_flush_user(void);
int lcrzo_conf_arpcache_flush_user(void);
int lcrzo_conf_routes_flush_user(void);
/*-------------------------------------------------------------*/
/* Nom : lcrzo_conf_route_to_host
   Description :
     Determine le device, les adresses source et l'adresse Ethernet
     destination a employer pour envoyer un paquet IP vers une machine.
   Parametre(s) d'entree :
     hostipl : machine a joindre
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     device : device a employer
     srcetha : adresse ethernet source a employer
     destetha : adresse ethernet destination a employer
     *psrcipl : adresse IP source a employer
     *prouteripl : adresse IP du routeur (ou 0 si hostipl est sur le
                   LAN local)
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
     LCRZO_ERR_OKROUTELOCALDEV : hostipl est l'adresse d'un device
                                 local
     LCRZO_ERR_OKROUTEHOSTUNREACH : hostipl est sur le LAN, mais on
                                    n'a pas pu obtenir son adresse
                                    Ethernet
     LCRZO_ERR_OKROUTEGWUNREACH : hostipl est derriere un routeur,
                                  mais on n'a pas pu obtenir l'adresse
                                  Ethernet du routeur
     LCRZO_ERR_OKROUTENOTFOUND : la table de routage ne contient pas
                                 d'entree vers hostipl
*/
int lcrzo_conf_route_to_host(lcrzo_ipl hostipl,
			     lcrzo_device device,
			     lcrzo_etha srcetha,
			     lcrzo_etha destetha,
			     lcrzo_ipl *psrcipl,
			     lcrzo_ipl *prouteripl);
/*-------------------------------------------------------------*/
/* juste pour le debogage */
int lcrzo_conf_debug_fprint(LCRZOFILE *pf);
#define lcrzo_conf_debug_print() lcrzo_conf_debug_fprint(stdout)

VOIR AUSSI
lcrzo(3), lcrzo_types(3), lcrzo_data(3), lcrzo_string(3), lcrzo_time(3), lcrzo_file(3), lcrzo_address(3), lcrzo_device(3), lcrzo_list(3), lcrzo_process(3), lcrzo_ipc(3), lcrzo_header(3), lcrzo_ipopt(3), lcrzo_tcpopt(3), lcrzo_packet(3), lcrzo_icmp(3), lcrzo_print(3), lcrzo_record(3), lcrzo_conf(3), lcrzo_spoof(3), lcrzo_sniff(3), lcrzo_sock(3), lcrzo_wait(3), lcrzo_global(3), lcrzo_error(3) lcrzo_misc(3),