diff --git a/apps/routeradvertisement/src/main/java/org/onosproject/ra/RouterAdvertisementManager.java b/apps/routeradvertisement/src/main/java/org/onosproject/ra/RouterAdvertisementManager.java
index 5f31bdf..2ee81e8 100644
--- a/apps/routeradvertisement/src/main/java/org/onosproject/ra/RouterAdvertisementManager.java
+++ b/apps/routeradvertisement/src/main/java/org/onosproject/ra/RouterAdvertisementManager.java
@@ -36,6 +36,8 @@
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
+import org.onosproject.mastership.MastershipEvent;
+import org.onosproject.mastership.MastershipListener;
 import org.onosproject.mastership.MastershipService;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
@@ -322,7 +324,6 @@
 
     // Handler for device updates
     private class InternalDeviceListener implements DeviceListener {
-
         @Override
         public void event(DeviceEvent event) {
             switch (event.type()) {
@@ -340,8 +341,25 @@
         }
     }
 
-    private final InternalDeviceListener internalDeviceListener =
-            new InternalDeviceListener();
+    private class InternalMastershipListener implements MastershipListener {
+        @Override
+        public void event(MastershipEvent event) {
+            switch (event.type()) {
+                case MASTER_CHANGED:
+                    clearTxWorkers();
+                    setupTxWorkers();
+                    log.trace("Processed mastership event {} on {}", event.type(), event.subject());
+                    break;
+                case BACKUPS_CHANGED:
+                case SUSPENDED:
+                default:
+                    break;
+            }
+        }
+    }
+
+    private final InternalDeviceListener internalDeviceListener = new InternalDeviceListener();
+    private final InternalMastershipListener internalMastershipListener = new InternalMastershipListener();
 
     // Processor for Solicited RA packets
     private class InternalPacketProcessor implements PacketProcessor {
@@ -390,8 +408,9 @@
         networkConfigRegistry.registerConfigFactory(deviceConfigFactory);
         loadGlobalPrefixConfig();
 
-        // Dynamic device updates handling
+        // Register device and mastership event listener
         deviceService.addListener(internalDeviceListener);
+        mastershipService.addListener(internalMastershipListener);
 
         // Setup pool and worker threads for existing interfaces
         setupPoolAndTxWorkers();
@@ -474,6 +493,7 @@
         networkConfigRegistry.unregisterConfigFactory(deviceConfigFactory);
         packetService.removeProcessor(processor);
         deviceService.removeListener(internalDeviceListener);
+        mastershipService.removeListener(internalMastershipListener);
 
         // Clear pool & threads
         clearPoolAndTxWorkers();
