Description | This table contains one entry per repeater in the
system. It defines objects which allow a network
management application to instruct an agent to watch
for a given MAC address and report which port it
was seen on. Only one address search can be in
progress on each repeater at any one time. Before
starting an address search, a management application
should obtain 'ownership' of the entry in
rptrAddrSearchTable for the repeater that is to
perform the search. This is accomplished with the
rptrAddrSearchLock and rptrAddrSearchStatus as
follows:
try_again:
get(rptrAddrSearchLock, rptrAddrSearchStatus)
while (rptrAddrSearchStatus != notInUse)
{
/* Loop waiting for objects to be available*/
short delay
get(rptrAddrSearchLock, rptrAddrSearchStatus)
}
/* Try to claim map objects */
lock_value = rptrAddrSearchLock
if ( set(rptrAddrSearchLock = lock_value,
rptrAddrSearchStatus = inUse,
rptrAddrSearchOwner = 'my-IP-address)
== FAILURE)
/* Another manager got the lock */
goto try_again
/* I have the lock */
set (rptrAddrSearchAddress = )
wait for rptrAddrSearchState to change from none
if (rptrAddrSearchState == single)
get (rptrAddrSearchGroup, rptrAddrSearchPort)
/* release the lock, making sure not to overwrite
anyone else's lock */
set (rptrAddrSearchLock = lock_value+1,
rptrAddrSearchStatus = notInUse,
rptrAddrSearchOwner = '')
A management station first retrieves the values of
the appropriate instances of the rptrAddrSearchLock
and rptrAddrSearchStatus objects, periodically
repeating the retrieval if necessary, until the value
of rptrAddrSearchStatus is 'notInUse'. The
management station then tries to set the same
instance of the rptrAddrSearchLock object to the
value it just retrieved, the same instance of the
rptrAddrSearchStatus object to 'inUse', and the
corresponding instance of rptrAddrSearchOwner to a
value indicating itself. If the set operation
succeeds, then the management station has obtained
ownership of the rptrAddrSearchEntry, and the value
of rptrAddrSearchLock is incremented by the agent (as
per the semantics of TestAndIncr). Failure of the
set operation indicates that some other manager has
obtained ownership of the rptrAddrSearchEntry.
Once ownership is obtained, the management station
can proceed with the search operation. Note that the
agent will reset rptrAddrSearchStatus to 'notInUse'
if it has been in the 'inUse' state for an abnormally
long period of time, to prevent a misbehaving manager
from permanently locking the entry. It is suggested
that this timeout period be between one and five
minutes.
When the management station has completed its search
operation, it should free the entry by setting
the instance of the rptrAddrSearchLock object to the
previous value + 1, the instance of the
rptrAddrSearchStatus to 'notInUse', and the instance
of rptrAddrSearchOwner to a zero length string. This
is done to prevent overwriting another station's
lock. |