[LiSA-Devel] CLI questions

Faur Andrei da3drus at gmail.com
Mon Jun 15 00:40:49 EEST 2009


Salut,

Am implementat acum un CLI entry pentru RSTP enable
per-interfata. Am urmarit modul in care este realizat acest
lucru in implementarea CDP. Problema pe care o aveam
era ca mergea enable pe o interfata, insa cand dadeam
enable pe alta, imi aparea :
Command rejected: No such file or directory

Acest lucru se datora urmatoarei bucati de cod din functia
cmd_rstp_if_set:
if (!RSTP_SESSION_OPEN(ctx, rstp)) {
        EX_STATUS_REASON(ctx, "%s", strerror(errno));
        return CLI_EX_REJECTED;
}

Problema e ca la crearea unei noi sesiuni in functia
rstp_session_start (apelata de macroul .._OPEN) aceasta
nu se salveaza nicaieri. Astfel, la un al doilea apel, se
creeaza o noua sesiune ceea ce inseamna de fapt incercarea
redeschiderii unui capat al cozii de mesaje. Aceasta da fail,
dat fiind ca aceasta coada a mai fost deschisa deja din acest
proces. Solutia e simpla, salvam contextul prin uc->rstp = rstp,
unde uc este un SWCLI_CTX(ctx).

Toate acestea sunt mirror-images ale codului din cdp asa ca
ma gandesc ca s-ar putea sa fie un bug in acea zona.
(:%s/RSTP/CDP/g pentru a identifica functiile CDP echivalente)

Sau, nu am inteles bine modul in care trebuie lucrat cu
cli_context si swcli_context, si cele de mai sus de fapt se datoreaza
unei erori in logica mea.

Ati putea explica ideea din spatele celor doua structuri de mai sus?
(*context)

Andrei


More information about the LiSA-Devel mailing list