From c26a7532c98c3c5ac70a4e5e39ada7b2a8633744 Mon Sep 17 00:00:00 2001
From: Keith Yeung <kungfukeith11@gmail.com>
Date: Tue, 24 Jan 2023 07:19:45 +0900
Subject: [PATCH] XCM: Add HRMP to SafeCallFilter (#6606)

* XCM: Add HRMP to SafeCallFilter

* Whitelist several paras_registrar calls
---
 polkadot/runtime/kusama/src/xcm_config.rs   | 10 +++++++++-
 polkadot/runtime/polkadot/src/xcm_config.rs | 10 +++++++++-
 polkadot/runtime/rococo/src/xcm_config.rs   | 10 +++++++++-
 polkadot/runtime/westend/src/xcm_config.rs  | 10 +++++++++-
 4 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/polkadot/runtime/kusama/src/xcm_config.rs b/polkadot/runtime/kusama/src/xcm_config.rs
index 96679c3919a..f46eca0c818 100644
--- a/polkadot/runtime/kusama/src/xcm_config.rs
+++ b/polkadot/runtime/kusama/src/xcm_config.rs
@@ -26,7 +26,7 @@ use frame_support::{
 	traits::{Contains, Everything, Nothing},
 	weights::Weight,
 };
-use runtime_common::{xcm_sender, ToAuthor};
+use runtime_common::{paras_registrar, xcm_sender, ToAuthor};
 use sp_core::ConstU32;
 use xcm::latest::prelude::*;
 use xcm_builder::{
@@ -326,6 +326,14 @@ impl Contains<RuntimeCall> for SafeCallFilter {
 				pallet_nomination_pools::Call::update_roles { .. } |
 				pallet_nomination_pools::Call::chill { .. },
 			) |
+			RuntimeCall::Hrmp(..) |
+			RuntimeCall::Registrar(
+				paras_registrar::Call::deregister { .. } |
+				paras_registrar::Call::swap { .. } |
+				paras_registrar::Call::remove_lock { .. } |
+				paras_registrar::Call::reserve { .. } |
+				paras_registrar::Call::add_lock { .. },
+			) |
 			RuntimeCall::XcmPallet(pallet_xcm::Call::limited_reserve_transfer_assets {
 				..
 			}) => true,
diff --git a/polkadot/runtime/polkadot/src/xcm_config.rs b/polkadot/runtime/polkadot/src/xcm_config.rs
index abdd850f9e6..4f817093703 100644
--- a/polkadot/runtime/polkadot/src/xcm_config.rs
+++ b/polkadot/runtime/polkadot/src/xcm_config.rs
@@ -25,7 +25,7 @@ use frame_support::{
 	traits::{Contains, Everything, Nothing},
 	weights::Weight,
 };
-use runtime_common::{xcm_sender, ToAuthor};
+use runtime_common::{paras_registrar, xcm_sender, ToAuthor};
 use sp_core::ConstU32;
 use xcm::latest::prelude::*;
 use xcm_builder::{
@@ -290,6 +290,14 @@ impl Contains<RuntimeCall> for SafeCallFilter {
 				pallet_nomination_pools::Call::update_roles { .. } |
 				pallet_nomination_pools::Call::chill { .. },
 			) |
+			RuntimeCall::Hrmp(..) |
+			RuntimeCall::Registrar(
+				paras_registrar::Call::deregister { .. } |
+				paras_registrar::Call::swap { .. } |
+				paras_registrar::Call::remove_lock { .. } |
+				paras_registrar::Call::reserve { .. } |
+				paras_registrar::Call::add_lock { .. },
+			) |
 			RuntimeCall::XcmPallet(pallet_xcm::Call::limited_reserve_transfer_assets {
 				..
 			}) => true,
diff --git a/polkadot/runtime/rococo/src/xcm_config.rs b/polkadot/runtime/rococo/src/xcm_config.rs
index 4b6702afa7b..229df3a5df9 100644
--- a/polkadot/runtime/rococo/src/xcm_config.rs
+++ b/polkadot/runtime/rococo/src/xcm_config.rs
@@ -25,7 +25,7 @@ use frame_support::{
 	traits::{Contains, Everything, Nothing},
 	weights::Weight,
 };
-use runtime_common::{xcm_sender, ToAuthor};
+use runtime_common::{paras_registrar, xcm_sender, ToAuthor};
 use sp_core::ConstU32;
 use xcm::latest::prelude::*;
 use xcm_builder::{
@@ -261,6 +261,14 @@ impl Contains<RuntimeCall> for SafeCallFilter {
 				pallet_bounties::Call::close_bounty { .. },
 			) |
 			RuntimeCall::ChildBounties(..) |
+			RuntimeCall::Hrmp(..) |
+			RuntimeCall::Registrar(
+				paras_registrar::Call::deregister { .. } |
+				paras_registrar::Call::swap { .. } |
+				paras_registrar::Call::remove_lock { .. } |
+				paras_registrar::Call::reserve { .. } |
+				paras_registrar::Call::add_lock { .. },
+			) |
 			RuntimeCall::XcmPallet(pallet_xcm::Call::limited_reserve_transfer_assets {
 				..
 			}) => true,
diff --git a/polkadot/runtime/westend/src/xcm_config.rs b/polkadot/runtime/westend/src/xcm_config.rs
index 5e887dafe9a..ef38ca5d297 100644
--- a/polkadot/runtime/westend/src/xcm_config.rs
+++ b/polkadot/runtime/westend/src/xcm_config.rs
@@ -24,7 +24,7 @@ use frame_support::{
 	parameter_types,
 	traits::{Contains, Everything, Nothing},
 };
-use runtime_common::{xcm_sender, ToAuthor};
+use runtime_common::{paras_registrar, xcm_sender, ToAuthor};
 use sp_core::ConstU32;
 use xcm::latest::prelude::*;
 use xcm_builder::{
@@ -201,6 +201,14 @@ impl Contains<RuntimeCall> for SafeCallFilter {
 				pallet_nomination_pools::Call::update_roles { .. } |
 				pallet_nomination_pools::Call::chill { .. },
 			) |
+			RuntimeCall::Hrmp(..) |
+			RuntimeCall::Registrar(
+				paras_registrar::Call::deregister { .. } |
+				paras_registrar::Call::swap { .. } |
+				paras_registrar::Call::remove_lock { .. } |
+				paras_registrar::Call::reserve { .. } |
+				paras_registrar::Call::add_lock { .. },
+			) |
 			RuntimeCall::XcmPallet(pallet_xcm::Call::limited_reserve_transfer_assets {
 				..
 			}) => true,
-- 
GitLab