diff --git a/opentrafficshaper/plugins/configmanager.pm b/opentrafficshaper/plugins/configmanager.pm
index eb43d8b0cbcc3c191e28c102432ee13405a52ea8..478737cc7aeb76981b11e56e1e5dbdb1696ab6bc 100644
--- a/opentrafficshaper/plugins/configmanager.pm
+++ b/opentrafficshaper/plugins/configmanager.pm
@@ -60,6 +60,7 @@ our (@ISA,@EXPORT,@EXPORT_OK);
 	removePoolAttribute
 	getPoolShaperState
 	setPoolShaperState
+	unsetPoolShaperState
 	isPoolIDValid
 	isPoolReady
 
@@ -70,6 +71,7 @@ our (@ISA,@EXPORT,@EXPORT_OK);
 	getPoolMembersByIP
 	getPoolMemberMatchPriority
 	setPoolMemberShaperState
+	unsetPoolMemberShaperState
 	getPoolMemberShaperState
 	getPoolMemberMatchPriority
 	setPoolMemberAttribute
@@ -1996,6 +1998,23 @@ sub setPoolShaperState
 }
 
 
+# Function to unset pools shaper state
+sub unsetPoolShaperState
+{
+	my ($pid,$state) = @_;
+
+
+	# Check pool exists first
+	if (!isPoolIDValid($pid)) {
+		return;
+	}
+
+	$pools->{$pid}->{'.shaper_state'} ^= $state;
+
+	return $pools->{$pid}->{'.shaper_state'};
+}
+
+
 # Function to get shaper state for a pool
 sub getPoolShaperState
 {
@@ -2408,6 +2427,23 @@ sub setPoolMemberShaperState
 }
 
 
+# Function to unset pool member shaper state
+sub unsetPoolMemberShaperState
+{
+	my ($pmid,$state) = @_;
+
+
+	# Check pool member exists first
+	if (!isPoolMemberIDValid($pmid)) {
+		return;
+	}
+
+	$poolMembers->{$pmid}->{'.shaper_state'} ^= $state;
+
+	return $poolMembers->{$pmid}->{'.shaper_state'};
+}
+
+
 # Function to get shaper state for a pool
 sub getPoolMemberShaperState
 {