diff --git a/src/Makefile b/src/Makefile
index 60f5d0d6090dcbf3c03e47648a8af12a50cb7059..a60218dd97c14267131ee2ed9edbf449c10603ed 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -7,7 +7,6 @@ LIBNETMNGROBJS := net_plugin.o \
 				  routing.o \
 				  ppp.o \
 				  routeradvertisement.o \
-				  ipv6rd.o \
 				  common.o
 		   
 LIBIFACESTACKOBJS := interfacestack.o
diff --git a/src/ip.c b/src/ip.c
index 2d19cc2fbdf83e2182f9a15759240dac995126e3..2be80d57ffbdabb9daf271e5ca969eb62003b028 100644
--- a/src/ip.c
+++ b/src/ip.c
@@ -2399,7 +2399,7 @@ DMLEAF tIPInterfaceIPv4AddressParams[] = {
 {"Enable", &DMWRITE, DMT_BOOL, get_IPInterfaceIPv4Address_Enable, set_IPInterfaceIPv4Address_Enable, BBFDM_BOTH},
 {"Status", &DMREAD, DMT_STRING, get_IPInterfaceIPv4Address_Status, NULL, BBFDM_BOTH},
 {"Alias", &DMWRITE, DMT_STRING, get_IPInterfaceIPv4Address_Alias, set_IPInterfaceIPv4Address_Alias, BBFDM_BOTH, DM_FLAG_UNIQUE},
-{"IPAddress", &DMWRITE, DMT_STRING, get_IPInterfaceIPv4Address_IPAddress, set_IPInterfaceIPv4Address_IPAddress, BBFDM_BOTH, DM_FLAG_UNIQUE|DM_FLAG_LINKER},
+{"IPAddress", &DMWRITE, DMT_STRING, get_IPInterfaceIPv4Address_IPAddress, set_IPInterfaceIPv4Address_IPAddress, BBFDM_BOTH, DM_FLAG_UNIQUE},
 {"SubnetMask", &DMWRITE, DMT_STRING, get_IPInterfaceIPv4Address_SubnetMask, set_IPInterfaceIPv4Address_SubnetMask, BBFDM_BOTH, DM_FLAG_UNIQUE},
 {"AddressingType", &DMREAD, DMT_STRING, get_IPInterfaceIPv4Address_AddressingType, NULL, BBFDM_BOTH},
 {0}
diff --git a/src/ipv6rd.c b/src/ipv6rd.c
deleted file mode 100644
index e9ad296b9942e0f6f3c764a430fccc707d1a4188..0000000000000000000000000000000000000000
--- a/src/ipv6rd.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * Copyright (C) 2024 iopsys Software Solutions AB
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation
- *
- *	Author: Mohd Husaam Mehdi <husaam.mehdi@iopsys.eu>
- */
-
-#include "ipv6rd.h"
-
-#define DEFAULT_SEC_NAME "wan6rd"
-
-/*************************************************************
-* ENTRY METHOD
-**************************************************************/
-static int browseIPv6rdInterfaceSettingInst(struct dmctx *dmctx, DMNODE *parent_node, void *prev_data, char *prev_instance)
-{
-	struct dm_data *curr_data = NULL;
-	LIST_HEAD(dup_list);
-	char *inst = NULL;
-
-	// if 6rd sections are present in uci then handle them
-	synchronize_specific_config_sections_with_dmmap_eq("network", "interface", "dmmap_ipv6rd", "proto", "6rd", &dup_list);
-	list_for_each_entry(curr_data, &dup_list, list) {
-
-		inst = handle_instance(dmctx, parent_node, curr_data->dmmap_section, "ipv6rd_intf_instance", "ipv6rd_intf_alias");
-
-		if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)curr_data, inst) == DM_STOP)
-			break;
-	}
-
-	free_dmmap_config_dup_list(&dup_list);
-
-	// no 6rd section was found
-	// we still present one 6rd object with empty values
-	// and if the any parameter is set then section will
-	// be created
-	if (!inst) {
-		struct dm_data data = {0};
-		struct uci_section *dmmap_sec = NULL;
-
-		dmuci_add_section_bbfdm("dmmap_ipv6rd", "interface", &dmmap_sec);
-	        dmuci_set_value_by_section(dmmap_sec, "section_name", DEFAULT_SEC_NAME);
-	        dmuci_set_value_by_section(dmmap_sec, "ipv6rd_intf_instance", "1");
-	        dmuci_set_value_by_section(dmmap_sec, "ipv6rd_intf_alias", "cpe-1");
-
-		data.dmmap_section = dmmap_sec;
-
-		inst = handle_instance(dmctx, parent_node, data.dmmap_section, "ipv6rd_intf_instance", "ipv6rd_intf_alias");
-		DM_LINK_INST_OBJ(dmctx, parent_node, (void *)&data, inst);
-	}
-
-	return 0;
-}
-
-/*************************************************************
-* GET & SET PARAM
-**************************************************************/
-static int get_IPv6rd_Enable(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
-{
-	// no way to disable ipv6rd for now, always enabled
-	*value = "1";
-	return 0;
-}
-
-static int set_IPv6rd_Enable(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
-{
-	switch (action)	{
-		case VALUECHECK:
-			if (bbfdm_validate_boolean(ctx, value))
-				return FAULT_9007;
-			break;
-		case VALUESET:
-			// no way to disable ipv6rd for now, always enabled
-			break;
-	}
-	return 0;
-}
-
-static int get_IPv6rd_InterfaceSettingNumberOfEntries(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
-{
-	int cnt = get_number_of_entries(ctx, data, instance, browseIPv6rdInterfaceSettingInst);
-	dmasprintf(value, "%d", cnt);
-	return 0;
-}
-
-static int get_IPv6rdInterfaceSetting_Enable(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
-{
-	*value = "0";
-
-	if (((struct dm_data *)data)->config_section == NULL)
-		return 0;
-
-	char *disabled = NULL;
-	dmuci_get_value_by_section_string(((struct dm_data *)data)->config_section, "disabled", &disabled);
-
-	if (DM_STRCMP(disabled, "1") != 0)
-		*value = "1";
-
-	return 0;
-}
-
-static void check_and_add_6rd_section(void **data)
-{
-	struct dm_data *curr_data = *((struct dm_data **)data);
-
-	if (curr_data->config_section == NULL) {
-		struct uci_section *s = NULL;
-
-		dmuci_add_section("network", "interface", &s);
-		dmuci_rename_section_by_section(s, DEFAULT_SEC_NAME);
-		dmuci_set_value_by_section(s, "proto", "6rd");
-		dmuci_set_value_by_section(s, "disabled", "1");
-
-		// for return value
-		curr_data->config_section = s;
-	}
-}
-
-static int set_IPv6rdInterfaceSetting_Enable(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
-{
-	bool b;
-
-	switch (action)	{
-		case VALUECHECK:
-			if (bbfdm_validate_boolean(ctx, value))
-				return FAULT_9007;
-			break;
-		case VALUESET:
-			check_and_add_6rd_section(&data);
-
-			string_to_bool(value, &b);
-			dmuci_set_value_by_section(((struct dm_data *)data)->config_section, "disabled", b ? "0" : "1");
-			break;
-	}
-	return 0;
-}
-
-static int get_IPv6rdInterfaceSetting_Status(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
-{
-	get_IPv6rdInterfaceSetting_Enable(refparam, ctx, data, instance, value);
-	*value = ((*value)[0] == '1') ? "Enabled" : "Disabled";
-	return 0;
-}
-
-static int get_IPv6rdInterfaceSetting_Alias(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
-{
-	return bbf_get_alias(ctx, ((struct dm_data *)data)->dmmap_section, "ipv6rd_intf_alias", instance, value);
-}
-
-static int set_IPv6rdInterfaceSetting_Alias(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
-{
-	check_and_add_6rd_section(&data);
-	return bbf_set_alias(ctx, ((struct dm_data *)data)->dmmap_section, "ipv6rd_intf_alias", instance, value);
-}
-
-static int get_IPv6rdInterfaceSetting_BorderRelayIPv4Addresses(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
-{
-	if (((struct dm_data *)data)->config_section == NULL) {
-		*value = "";
-		return 0;
-	}
-
-	dmuci_get_value_by_section_string(((struct dm_data *)data)->config_section, "peeraddr", value);
-	return 0;
-}
-
-static int set_IPv6rdInterfaceSetting_BorderRelayIPv4Addresses(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
-{
-	switch (action)	{
-		case VALUECHECK:
-			// only single IPv4 address is allowed in openwrt
-			if (bbfdm_validate_string(ctx, value, -1, 15, NULL, IPv4Address))
-				return FAULT_9007;
-			break;
-		case VALUESET:
-			check_and_add_6rd_section(&data);
-			dmuci_set_value_by_section(((struct dm_data *)data)->config_section, "peeraddr", value);
-			break;
-	}
-	return 0;
-}
-
-static int get_IPv6rdInterfaceSetting_AllTrafficToBorderRelay(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
-{
-	if (((struct dm_data *)data)->config_section == NULL) {
-		*value = "";
-		return 0;
-	}
-	// this is always true in openwrt
-	*value = "1";
-	return 0;
-}
-
-static int set_IPv6rdInterfaceSetting_AllTrafficToBorderRelay(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
-{
-	switch (action)	{
-		case VALUECHECK:
-			if (bbfdm_validate_boolean(ctx, value))
-				return FAULT_9007;
-			break;
-		case VALUESET:
-			// this is always true in openwrt
-			// if logic is added in future, remember to use check_and_add_6rd_section
-			break;
-	}
-	return 0;
-}
-
-static int get_IPv6rdInterfaceSetting_SPIPv6Prefix(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
-{
-	*value = "";
-
-	if (((struct dm_data *)data)->config_section == NULL)
-		return 0;
-
-	char *ip6prefix = NULL, *ip6prefixlen = NULL;
-
-	dmuci_get_value_by_section_string(((struct dm_data *)data)->config_section, "ip6prefix", &ip6prefix);
-	dmuci_get_value_by_section_string(((struct dm_data *)data)->config_section, "ip6prefixlen", &ip6prefixlen);
-
-	if (DM_STRLEN(ip6prefix) && DM_STRLEN(ip6prefixlen))
-		dmasprintf(value, "%s/%s", ip6prefix, ip6prefixlen);
-
-	return 0;
-}
-
-static int set_IPv6rdInterfaceSetting_SPIPv6Prefix(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
-{
-	switch (action)	{
-		case VALUECHECK:
-			if (bbfdm_validate_string(ctx, value, -1, -1, NULL, IPv6Prefix))
-				return FAULT_9007;
-			break;
-		case VALUESET:
-			check_and_add_6rd_section(&data);
-			dmuci_set_value_by_section(((struct dm_data *)data)->dmmap_section, "prefix", value);
-			// separate the prefix and prefix len
-			char *slash = DM_STRCHR(value, '/');
-			if (!slash)
-				return FAULT_9002;
-
-			// terminate prefix where slash was present
-			*slash = '\0';
-			slash++;
-
-			dmuci_set_value_by_section(((struct dm_data *)data)->config_section, "ip6prefix", value);
-			dmuci_set_value_by_section(((struct dm_data *)data)->config_section, "ip6prefixlen", slash);
-			break;
-	}
-	return 0;
-}
-
-static int get_IPv6rdInterfaceSetting_IPv4MaskLength(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
-{
-	if (((struct dm_data *)data)->config_section == NULL) {
-		*value = "";
-		return 0;
-	}
-
-	dmuci_get_value_by_section_string(((struct dm_data *)data)->config_section, "ip4prefixlen", value);
-	return 0;
-}
-
-static int set_IPv6rdInterfaceSetting_IPv4MaskLength(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
-{
-	switch (action)	{
-		case VALUECHECK:
-			if (bbfdm_validate_unsignedInt(ctx, value, RANGE_ARGS{{"0","32"}}, 1))
-				return FAULT_9007;
-			break;
-		case VALUESET:
-			check_and_add_6rd_section(&data);
-			dmuci_set_value_by_section(((struct dm_data *)data)->config_section, "ip4prefixlen", value);
-			break;
-	}
-	return 0;
-}
-
-static int get_IPv6rdInterfaceSetting_AddressSource(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
-{
-	if (((struct dm_data *)data)->config_section == NULL) {
-		*value = "";
-		return 0;
-	}
-
-	dmuci_get_value_by_section_string(((struct dm_data *)data)->dmmap_section, "ipv4path", value);
-
-	if (!value || (*value)[0] == '\0') {
-		char *ipaddr = NULL;
-		dmuci_get_value_by_section_string(((struct dm_data *)data)->config_section, "ipaddr", &ipaddr);
-
-		_bbfdm_get_references(ctx, "Device.IP.Interface.*.IPv4Address.", "IPAddress", ipaddr, value);
-		// save it for later
-		dmuci_set_value_by_section(((struct dm_data *)data)->dmmap_section, "ipv4path", *value);
-	}
-
-	return 0;
-}
-
-static int set_IPv6rdInterfaceSetting_AddressSource(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
-{
-	char *allowed_objects[] = {"Device.IP.Interface.*.IPv4Address.", NULL};
-	struct dm_reference reference = {0};
-
-	bbfdm_get_reference_linker(ctx, value, &reference);
-
-	switch (action)	{
-		case VALUECHECK:
-			if (bbfdm_validate_string(ctx, reference.path, -1, 256, NULL, NULL))
-				return FAULT_9007;
-
-			if (dm_validate_allowed_objects(ctx, &reference, allowed_objects))
-				return FAULT_9007;
-			break;
-		case VALUESET:
-			if (DM_STRLEN(reference.value)) {
-				check_and_add_6rd_section(&data);
-				dmuci_set_value_by_section(((struct dm_data *)data)->config_section, "ipaddr", reference.value);
-				dmuci_set_value_by_section(((struct dm_data *)data)->dmmap_section, "ipv4path", reference.path);
-			}
-			break;
-	}
-	return 0;
-}
-
-static int get_IPv6rdInterfaceSetting_TunnelInterface(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
-{
-	// Tunnel, Tunneled interfaces are not yet supported
-	// when their support is added, we can update this function
-	*value = "";
-	return 0;
-}
-
-static int get_IPv6rdInterfaceSetting_TunneledInterface(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
-{
-	// Tunnel, Tunneled interfaces are not yet supported
-	// when their support is added, we can update this function
-	*value = "";
-	return 0;
-}
-
-/**********************************************************************************************************************************
-*                                            OBJ & PARAM DEFINITION
-***********************************************************************************************************************************/
-/* *** Device. *** */
-DMOBJ tDeviceIPv6rdObj[] = {
-/* OBJ, permission, addobj, delobj, checkdep, browseinstobj, nextdynamicobj, dynamicleaf, nextobj, leaf, linker, bbfdm_type, uniqueKeys, version*/
-{"IPv6rd", &DMREAD, NULL, NULL, "file:/lib/netifd/proto/6rd.sh,/etc/config/network", NULL, NULL, NULL, tIPv6rdObj, tIPv6rdParams, NULL, BBFDM_BOTH, NULL},
-{0}
-};
-
-/* *** Device.IPv6rd. *** */
-DMOBJ tIPv6rdObj[] = {
-/* OBJ, permission, addobj, delobj, checkdep, browseinstobj, nextdynamicobj, dynamicleaf, nextobj, leaf, linker, bbfdm_type, uniqueKeys */
-{"InterfaceSetting", &DMREAD, NULL, NULL, NULL, browseIPv6rdInterfaceSettingInst, NULL, NULL, NULL, tIPv6rdInterfaceSettingParams, NULL, BBFDM_BOTH, NULL},
-{0}
-};
-
-DMLEAF tIPv6rdParams[] = {
-/* PARAM, permission, type, getvalue, setvalue, bbfdm_type */
-{"Enable", &DMWRITE, DMT_BOOL, get_IPv6rd_Enable, set_IPv6rd_Enable, BBFDM_BOTH},
-{"InterfaceSettingNumberOfEntries", &DMREAD, DMT_UNINT, get_IPv6rd_InterfaceSettingNumberOfEntries, NULL, BBFDM_BOTH},
-{0}
-};
-
-/* *** Device.IPv6rd.InterfaceSetting.{i}. *** */
-DMLEAF tIPv6rdInterfaceSettingParams[] = {
-/* PARAM, permission, type, getvalue, setvalue, bbfdm_type */
-{"Enable", &DMWRITE, DMT_BOOL, get_IPv6rdInterfaceSetting_Enable, set_IPv6rdInterfaceSetting_Enable, BBFDM_BOTH},
-{"Status", &DMREAD, DMT_STRING, get_IPv6rdInterfaceSetting_Status, NULL, BBFDM_BOTH},
-{"Alias", &DMWRITE, DMT_STRING, get_IPv6rdInterfaceSetting_Alias, set_IPv6rdInterfaceSetting_Alias, BBFDM_BOTH},
-{"BorderRelayIPv4Addresses", &DMWRITE, DMT_STRING, get_IPv6rdInterfaceSetting_BorderRelayIPv4Addresses, set_IPv6rdInterfaceSetting_BorderRelayIPv4Addresses, BBFDM_BOTH},
-{"AllTrafficToBorderRelay", &DMWRITE, DMT_BOOL, get_IPv6rdInterfaceSetting_AllTrafficToBorderRelay, set_IPv6rdInterfaceSetting_AllTrafficToBorderRelay, BBFDM_BOTH},
-{"SPIPv6Prefix", &DMWRITE, DMT_STRING, get_IPv6rdInterfaceSetting_SPIPv6Prefix, set_IPv6rdInterfaceSetting_SPIPv6Prefix, BBFDM_BOTH},
-{"IPv4MaskLength", &DMWRITE, DMT_UNINT, get_IPv6rdInterfaceSetting_IPv4MaskLength, set_IPv6rdInterfaceSetting_IPv4MaskLength, BBFDM_BOTH},
-{"AddressSource", &DMWRITE, DMT_STRING, get_IPv6rdInterfaceSetting_AddressSource, set_IPv6rdInterfaceSetting_AddressSource, BBFDM_BOTH, DM_FLAG_REFERENCE},
-{"TunnelInterface", &DMREAD, DMT_STRING, get_IPv6rdInterfaceSetting_TunnelInterface, NULL, BBFDM_BOTH},
-{"TunneledInterface", &DMREAD, DMT_STRING, get_IPv6rdInterfaceSetting_TunneledInterface, NULL, BBFDM_BOTH},
-{0}
-};
-
diff --git a/src/ipv6rd.h b/src/ipv6rd.h
deleted file mode 100644
index 65102af739502316d894474f7bca5958d5bfb43e..0000000000000000000000000000000000000000
--- a/src/ipv6rd.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2023 iopsys Software Solutions AB
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation
- *
- *	Author: Mohd Husaam Mehdi <husaam.mehdi@iopsys.eu>
- */
-
-#ifndef __IPV6RD_H
-#define __IPV6RD_H
-
-#include <libbbfdm-api/dmcommon.h>
-
-extern DMOBJ tDeviceIPv6rdObj[];
-extern DMOBJ tIPv6rdObj[];
-extern DMLEAF tIPv6rdParams[];
-extern DMLEAF tIPv6rdInterfaceSettingParams[];
-
-
-#endif //__IPV6RD_H
-
diff --git a/src/net_plugin.c b/src/net_plugin.c
index b8bab34a4506d7359b53eefd6f19bea3f8d64549..fc1aa616d6b775e8200eae01fc26842e5fbf7d57 100644
--- a/src/net_plugin.c
+++ b/src/net_plugin.c
@@ -13,7 +13,6 @@
 #include "ppp.h"
 #include "routing.h"
 #include "routeradvertisement.h"
-#include "ipv6rd.h"
 
 DM_MAP_OBJ tDynamicObj[] = {
 /* parentobj, nextobject, parameter */
@@ -22,6 +21,5 @@ DM_MAP_OBJ tDynamicObj[] = {
 {"Device.", tDevicePPPObj, NULL},
 {"Device.", tDeviceRoutingObj, NULL},
 {"Device.", tDeviceRouterAdvertisementObj, NULL},
-{"Device.", tDeviceIPv6rdObj, NULL},
 {0}
 };