diff -r a579325b79dd -r 1422c6cd3f0c networkprotocols/tcpipv4v6prt/src/iface.cpp --- a/networkprotocols/tcpipv4v6prt/src/iface.cpp Tue Feb 02 01:27:53 2010 +0200 +++ b/networkprotocols/tcpipv4v6prt/src/iface.cpp Sat Feb 20 00:22:11 2010 +0200 @@ -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;