01-17-2005 05:16 PM
We are committed to support the Tut Systems MDU chassis with Ciscos BBSM 5.2 and 5.3. The Tut chassis do not have link status support on the line cards in use, so we chose to determine whether the client is still physically connected to the network element by looking if the MAC address is still known by the switch at the port of interest.
In order for this we tried to override the CEtherStack::IsPortConnected Method, but found that we never get to our own DLL. We have overridden other methods for determining the location of client computers and populate the port map table in the database, having no trouble with them; but can not get the client status to be correctly detected.
Are we using the wrong method? Should we override a different method of the CEtherStack class?
I hope somebody have experience with this and can help us.
Regards,
Carlos E. Alfaro
01-21-2005 12:04 PM
This doucment talks about each method in CEtherstack class. Please have a look at it and choose appropriate to method.
http://www.cisco.com/univercd/cc/td/doc/product/aggr/bbsm/bbsm52/sdk/sdk52_07.htm
01-22-2005 03:05 PM
b.hsu,
Thank you for your answer.
We precisely started from there, the Cisco BBSM SDK Developer Guide
Software Release 5.2 and specifically the chapter 7 Creating Network Element Modules you refer to.
We are having trouble to override the CEtherStack::IsPortConnected Method, although we have successfully overridden the CEtherStack::FindPortFromMac Method.
We have tried to log a message to the trace utility from the entry point of our methods and we are not getting to our own IsPortConnected Method. We keep geeting the following error message on the BBSM trace utility:
GenericSwitch\EtherStack.cpp 1408 GetOperStatusFromPort(), MIBPort 1: Attempt to get dot1dBasePortIfIndex 17.1.4.1.2.1 failed
So we think that the CEtherStack::IsPortConnected Method is still been executed instead of our own.
For our FindPortFromMac Method we get our messages on the trace, that looks like this:
tut.cpp 54 entrada del FindPortFromMac
Part of our code follows.
----------------------------------------------------
// tut.cpp: implementation of the Ctut class.
//
//////////////////////////////////////////////////////////////////////
... other code ...
bool Ctut::FindPortFromMac(CString &csPortId, const MACADDR &MACaddr)
{
CString csDebug;
csDebug.Format ("entrada del FindPortFromMac");
WRITE_DEBUG_STRING (csDebug);
... other code ...
bool Ctut::IsPortConnected(const CString &csPortId, const CString &csClientIP)
{
CString csMessage;
csMessage.Format("entrada del IsPortConnected");
WRITE_DEBUG_STRING(csMessage);
... other code ...
... end of tut.cpp
// tut.h: interface for the Ctut class.
//
//////////////////////////////////////////////////////////////////////
... other code ...
protected:
virtual bool FindPortFromMac(CString& csPortId, const MACADDR& MACaddr);
virtual bool IsPortConnected(const CString& csPortId, const CString& csClientIP);
... other code ...
... end of tut.h
----------------------------------------------------
End of our partial code.
¿Have any idea why the IsPortConnected Method is not been overridden?
¿Is there any successful implementation that overrides the CEtherStack::IsPortConnected Method?
Hope somebody can give us a clue.
Carlos E. Alfaro
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide