Virtlab:Konzolový server
Z VirtlabWiki
Verze z 18:20, 25. 10. 2007 Kuc274 (Diskuse | příspěvky) (→devices.c (.h)) ← Předchozí porovnání |
Verze z 18:32, 25. 10. 2007 Kuc274 (Diskuse | příspěvky) (→Struktura zdrojových souborů) Následující porovnání → |
||
Řádka 32: | Řádka 32: | ||
* ''Soubor oznaceny jako "devs_file" je konfiguracni soubor, ktery se standartne nachazi v '''/etc/virtlab''' a ma nazev '''cons-devices.conf'''.'' | * ''Soubor oznaceny jako "devs_file" je konfiguracni soubor, ktery se standartne nachazi v '''/etc/virtlab''' a ma nazev '''cons-devices.conf'''.'' | ||
* Tato funkce je volana skoro na zacatku funkce '''main''' v souboru '''server.c'''. | * Tato funkce je volana skoro na zacatku funkce '''main''' v souboru '''server.c'''. | ||
+ | |||
Funkce '''find_device_by_name''' hleda nazev specifikovany parametrem ''devname'' v seznamu zarizeni (specifikovan druhym parametrem). Jestlize zarizeni najde, vraci odkaz na strukturu, ktera jej popisuje. V opacnem pripade vraci odkaz na NULL. | Funkce '''find_device_by_name''' hleda nazev specifikovany parametrem ''devname'' v seznamu zarizeni (specifikovan druhym parametrem). Jestlize zarizeni najde, vraci odkaz na strukturu, ktera jej popisuje. V opacnem pripade vraci odkaz na NULL. | ||
Řádka 37: | Řádka 38: | ||
Funkce '''split_dev_id_location''' rozdeli vstupni retezec ''dev_at_loc'' na dve casti. Prvni odkazuje na jmeno zarizeni a druha na nazev lokality. (Obe ale realne pracuji se stejnym retezcem, jen ukazuji do jine jeho casti - nic se nekopiruje.) | Funkce '''split_dev_id_location''' rozdeli vstupni retezec ''dev_at_loc'' na dve casti. Prvni odkazuje na jmeno zarizeni a druha na nazev lokality. (Obe ale realne pracuji se stejnym retezcem, jen ukazuji do jine jeho casti - nic se nekopiruje.) | ||
- | === domain.c === | + | === domain.c (.h) === |
DOMAINS_T *add_domain(DOMAIN_T domain, DOMAINS_T **doms); | DOMAINS_T *add_domain(DOMAIN_T domain, DOMAINS_T **doms); | ||
int load_domains(const char *doms_file, DOMAINS_T **doms); | int load_domains(const char *doms_file, DOMAINS_T **doms); | ||
Řádka 44: | Řádka 45: | ||
Práce s doménami je velice podobná práci se zařízeními. Jsou k dispozici opět čtyři funkce, odlišný význam má pouze ta poslední (find_domain_by_ip). Má za úkol najít doménu v seznamu, ovšem na základě IP adresy. | Práce s doménami je velice podobná práci se zařízeními. Jsou k dispozici opět čtyři funkce, odlišný význam má pouze ta poslední (find_domain_by_ip). Má za úkol najít doménu v seznamu, ovšem na základě IP adresy. | ||
+ | |||
+ | * ''Soubor oznaceny jako "doms_file" je konfiguracni soubor, ktery se standartne nachazi v '''/etc/virtlab''' a ma nazev '''cons-servers.conf'''.'' | ||
+ | * Tato funkce je volana skoro na zacatku funkce '''main''' v souboru '''server.c'''. | ||
Doména může být typu '''local''' nebo '''remote'''. | Doména může být typu '''local''' nebo '''remote'''. |
Verze z 18:32, 25. 10. 2007
Struktura zdrojových souborů
devices.c (.h)
používané struktury (zdrojový kód po mírné úpravě):
//popis jednoho zarizeni struct DEVICE_T { char devicename[DEV_ID_MAX_LENGTH]; int device_type; int fd_for_tutor; int fd_for_client; union { char serial_port_path[MAX_SERIAL_PATH]; TELNET_CONN telnet_data; }; }; //polozka zretezeneho seznamu zarizeni struct DEVICES_T { DEVICE_T data; struct devices_t *next; };
Přehled funkcí:
DEVICES_T *add_device(DEVICE_T device, DEVICES_T **devs); int load_devices(const char *devs_file, DEVICES_T **devs); DEVICE_T *find_device_by_name(const char* devname, DEVICES_T *devs); int split_dev_id_location(char *dev_at_loc, char **dev, char **loc);
Funkce add_device přidá zařízení do seznamu. Prvnim parametrem je popis pridavaneho zarizeni, druhym pak ukazatel na "prvni zarizeni v aktualnim seznamu". Nove pridane zarizeni se zaradi na zacatek seznamu. Funkce vraci ukazatel na seznam.
Funkce load_device nacita z textoveho souboru (devs_file) popisy zarizeni. Rozlisi, zda je zarizeni pripojeno seriovou linkou nebo pomoci Ethernetu. Tuto i dalsi informace ulozi do struktury pro popis zarizeni (DEVICE_T), kterou nasledne zakomponuje do seznamu zarizeni (pomoci funkce add_device ).
- Soubor oznaceny jako "devs_file" je konfiguracni soubor, ktery se standartne nachazi v /etc/virtlab a ma nazev cons-devices.conf.
- Tato funkce je volana skoro na zacatku funkce main v souboru server.c.
Funkce find_device_by_name hleda nazev specifikovany parametrem devname v seznamu zarizeni (specifikovan druhym parametrem). Jestlize zarizeni najde, vraci odkaz na strukturu, ktera jej popisuje. V opacnem pripade vraci odkaz na NULL.
Funkce split_dev_id_location rozdeli vstupni retezec dev_at_loc na dve casti. Prvni odkazuje na jmeno zarizeni a druha na nazev lokality. (Obe ale realne pracuji se stejnym retezcem, jen ukazuji do jine jeho casti - nic se nekopiruje.)
domain.c (.h)
DOMAINS_T *add_domain(DOMAIN_T domain, DOMAINS_T **doms); int load_domains(const char *doms_file, DOMAINS_T **doms); DOMAIN_T *find_domain_by_name(const char* domname, DOMAINS_T *doms); DOMAIN_T *find_domain_by_ip(in_addr_t *ip, DOMAINS_T *doms);
Práce s doménami je velice podobná práci se zařízeními. Jsou k dispozici opět čtyři funkce, odlišný význam má pouze ta poslední (find_domain_by_ip). Má za úkol najít doménu v seznamu, ovšem na základě IP adresy.
- Soubor oznaceny jako "doms_file" je konfiguracni soubor, ktery se standartne nachazi v /etc/virtlab a ma nazev cons-servers.conf.
- Tato funkce je volana skoro na zacatku funkce main v souboru server.c.
Doména může být typu local nebo remote.