Domanda

Sono sconcertato cercando di far funzionare EtherOutPuthookdd (). La sua controparte, EtherinPuthookadd (), sembra funzionare bene. La versione del sistema operativo in questione è VXWorks 5.4.

Il codice Hook sembra così (il codice che intendo effettivamente eseguito è più complicato, ma questo serve per un esempio.)

int anCounter;
STATUS etherHook(struct ifnet *pif, char *buf, int size)
{
    anCounter += 1;
    return FALSE;
}

Posso collegare EtherinPuthookadd dalla shell VxWorks come così

etherInputHookAdd etherHook,"fei",0

Questo restituisce 0 (stato OK), dopo di che l'esame della variabile "Anounter" indicherà l'attività come previsto. Tuttavia, nessuna tale fortuna con la direzione di uscita. Ho provato entrambe queste righe di comando

etherOutputHookAdd etherHook,"fei",0
etherOutputHookAdd etherHook

Entrambi tornano ok, ma la routine di hook non sembra essere chiamata affatto. Le mie migliori ipotesi sono (1) che mi manca una fase di inizializzazione, o lo chiami sbagliato, (2) L'implementazione di EtheRoutPuthookadd è solo uno stub, (3) non puoi chiamarlo dalla shell, o (4) forse L'implementazione del mio driver NIC è buggy.

Qualsiasi idea che risolva il problema centrale - Come vedo cosa viene inviato dalla mia tavola - prego.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top