diff -r 53c7f3ef2709 -r 7e9ef0db0a3d networkprotocols/tcpipv4v6prt/src/iface.cpp --- a/networkprotocols/tcpipv4v6prt/src/iface.cpp Mon Mar 08 21:44:54 2010 +0000 +++ b/networkprotocols/tcpipv4v6prt/src/iface.cpp Sun Mar 14 13:15:53 2010 +0000 @@ -75,7 +75,7 @@ #include #include "inet6log.h" #include "iface.h" -#include // IPv6 driver API specifications +#include // IPv6 driver API specifications #include #include #include @@ -5538,12 +5538,20 @@ // Should this also check whether address type is same? // Changing just type does not work with this code! // -- msa 24.10.2003 - if (aId.IsSet() && aPrefix == aId.iPrefix && aAddr.IsEqual(aId.iId)) - return 0; // Id is same as before, no change! if (aPrefix < 0 || aPrefix > 128) return 0; // Invalid length, do nothing! if (TIp46Addr::Cast(aAddr).IsMulticast()) return 0; // A multicast address cannot be my own. + if (aId.IsSet() && aPrefix == aId.iPrefix && aAddr.IsEqual(aId.iId)) + { + // Id has not changed but expecting some change in any of + // the other interface fields. So raising a Interface change event + // for the subscribers to keep themselves updated + + // Send notification to the event service + NotifyInterfaceEvent(EventTypeModify); + return 1; + } UpdateIdRoutes(aId, 0); // Remove old route (if needed) aId.iId = aAddr;