diff --git a/opentrafficshaper/plugins/configmanager.pm b/opentrafficshaper/plugins/configmanager.pm
index ac308a1b4b001430ad5f0ffda4c7bcbf824062f9..5d9ca4cb64ac30c0c9db60b7ed223394a89185a1 100644
--- a/opentrafficshaper/plugins/configmanager.pm
+++ b/opentrafficshaper/plugins/configmanager.pm
@@ -1323,10 +1323,10 @@ sub _process_limit_remove
 		# Set this UID as no longer using this IP
 		# NK: If we try remove it before the limit is actually removed we could get a reconnection causing this value
 		#     to be totally gone, which means we not tracking this limit using this IP anymore, not easily solved!!
-		delete($limitIPMap->{$limit->{'IP'}}->{$lid});
+		delete($limitIPMap->{$limit->{'InterfaceGroupID'}}->{$limit->{'IP'}}->{$lid});
 		# Check if we can delete the IP too
-		if (keys %{$limitIPMap->{$limit->{'IP'}}} == 0) {
-			delete($limitIPMap->{$limit->{'IP'}});
+		if (keys %{$limitIPMap->{$limit->{'InterfaceGroupID'}}->{$limit->{'IP'}}} == 0) {
+			delete($limitIPMap->{$limit->{'InterfaceGroupID'}}->{$limit->{'IP'}});
 		}
 
 		# Remove from change queue
@@ -1548,11 +1548,16 @@ sub _process_limit_change_queue
 
 				my $updateShaper = 0;
 
+				# Initialize the IP map if the interface group ID hash is undefined
+				if (!defined($limitIPMap->{$climit->{'InterfaceGroupID'}})) {
+					$limitIPMap->{$climit->{'InterfaceGroupID'}} = { };
+				}
+
 				# We first going to look for IP conflicts...
-				my @ipLimits = keys %{$limitIPMap->{$climit->{'IP'}}};
+				my @ipLimits = keys %{$limitIPMap->{$climit->{'InterfaceGroupID'}}->{$climit->{'IP'}}};
 				if (
 					# If there is already an entry and its not us ...
-					( @ipLimits == 1 && !defined($limitIPMap->{$climit->{'IP'}}->{$lid}) )
+					( @ipLimits == 1 && !defined($limitIPMap->{$climit->{'InterfaceGroupID'}}->{$climit->{'IP'}}->{$lid}) )
 					# Or if there is more than 1 entry...
 					|| @ipLimits > 1
 				) {
@@ -1572,7 +1577,7 @@ sub _process_limit_change_queue
 					# IP from the shaper below...
 					foreach my $lid2 (@ipLimits) {
 						# Check if the limit has been setup already (all but the limit we busy with, as its setup below)
-						if (defined($limitIPMap->{$climit->{'IP'}}->{$lid2})) {
+						if (defined($limitIPMap->{$climit->{'InterfaceGroupID'}}->{$climit->{'IP'}}->{$lid2})) {
 							my $glimit2 = $limits->{$lid2};
 
 							# If the limit is active or pending on the shaper, remove it
@@ -1594,7 +1599,7 @@ sub _process_limit_change_queue
 				}
 
 				# Set this UID as using this IP
-				$limitIPMap->{$climit->{'IP'}}->{$lid} = 1;
+				$limitIPMap->{$climit->{'InterfaceGroupID'}}->{$climit->{'IP'}}->{$lid} = 1;
 
 				# This is now live
 				$limits->{$lid} = $climit;