[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