[LiSA-Devel] Modificare CLI

Radu Rendec radu.rendec at ines.ro
Wed Apr 22 00:22:09 EEST 2009


On Tue, 2009-04-21 at 13:39 +0300, Constantin Blanariu wrote:
> Voi avea nevoie să adaug o nouă facilitate în CLI și aș vrea să vă cer
> un mic
> guideline pentru asta.
> 
> Mă refer la arbori, funcții, locul unde ar trebui implementate.
> 
> Comenzile sunt:
> 
> (config-if) # channel-group <number> mode {on|passive|active}

Ionut ti-a zis deja unde anume trebuie adaugate comenzile. Eu vreau sa
adaug cateva observatii:
* momentan cli-ul stie de cateva tipuri de interfata: "port fizic in mod
switched", "port fizic in mod routed", "interfata virtuala de vlan";
* tree-ul de configurare de interfete e comun pentru toate tipurile, dar
anumite comenzi sunt vizibile/rulabile doar pentru anumite tipuri de
interfete;
* channel-group ar trebui sa existe doar pentru "port fizic in mod
switched";
* tipurile de interfete sunt definite in userspace/cli/lib/interface.h -
acolo gasesti IFF_SWITCHED, IFF_VIF etc;
* pentru un exemplu de comanda care apare conditionat de tipul
interfetei, uita-te la comanda "ip"; daca nu intelegi cum sunt filtrate,
da mail si iti povestim


> și
> 
> (config) # interface port-channel <number>
> (config-if) # switchport mode {access|trunk}

* practic trebuie sa adaugi un nou tip de interfata (pe langa cele pe
care le-am enumerat mai sus), respectiv port-channel;
* ar trebui sa modifici cel putin handlerul cmd_int_any() si functia
if_parse_args() pe care se bazeaza acesta;
* indiferent ce implementare la nivel de kernel vei alege (personal cred
ca cel mai bine este ce a zis Ionut), vei avea un netdevice
corespunzator interfetei portchannel;
* similar cu interfetele ethX, interfetele tale pot fi denumite in mai
multe feluri: Po1, Port1, Port-Channel1, oricare dintre celelalte dar cu
spatiu inainte de 1 etc - cli-ul ar trebui sa recunoasca toate
variantele (dar in final sa obtina index-ul interfetei cu care sa
lucreze mai departe); aici ar trebui sa studiezi cum e implementata
chestia asta pentru Ethernet;
* similar cu interfetele vlanX, interfetele tale pot fi *create*
on-the-fly in momentul in care dai "interface port-channel" din meniul
config; aici trebuie sa studiezi cum e facuta asta pentru Vlan -
algoritmul din cmd_int_any() nu e tocmai trivial

Daca ai nelamuriri, stii unde sa intrebi ;)

Bafta,

Radu




More information about the LiSA-Devel mailing list