[Xorp-cvs] XORP cvs commit: xorp/libxorp
Bruce Simpson
bms@icir.org
Tue, 14 Mar 2006 13:26:36 GMT
CVSROOT: /usr/local/www/data/cvs
Module name: xorp
Changes by: bms@xorpc.icir.org 2006-03-14 13:26:35 UTC
XORP CVS repository
Modified files:
libxorp ether_compat.c
Log message:
Resolve a critical edge case in the XRL layer for the Microsoft
Windows Server port of XORP 1.2.
The previous revision attempted to fix a regression in the Mac and
EtherMac classes by making the ether_aton() function (imported from
tcpdump) more liberal in the input which it accepts.
This commit however introduced the wrong behaviour. Both Mac and
EtherMac depend (on their definition) in the ability of ether_aton()
to parse Ethernet addresses rendered as ASCII strings in a manner
consistent across platforms, that is, the platform's ether_aton()
function must be bug-for-bug-compatible with FreeBSD's.
This in itself could be considered a design bug.
Because of this behaviour, whenever an ifmgr_mirror XRL client
registered its interface with the FEA, the updates which it received
were rejected as a non-critical XRL error (220 Internal error, corrupt
xrl) because the underlying Mac class used to parse the XRL mac address
atom was rejecting otherwise valid input.
Therefore, revert the previous commit, by introducing a FreeBSD-style
ether_aton() function which depends solely on the ISO C89 function
sscanf().
Approved by: atanu (implicitly)
Reviewed by: pavlin
Bugzilla ID: http://www.xorp.org/bugzilla/show_bug.cgi?id=581
Revision Changes Path
1.8 +18 -39; commitid: 6874416c4267ea6; xorp/libxorp/ether_compat.c