diff --git a/frontend/src/api-services/dns_fqdn.service.js b/frontend/src/api-services/dns_fqdn.service.js
index 8fac8146d18a9539068da0cd3bf107b353a93705..4d553b0f77c831032ba2f950aef1c9db8115b718 100644
--- a/frontend/src/api-services/dns_fqdn.service.js
+++ b/frontend/src/api-services/dns_fqdn.service.js
@@ -13,7 +13,13 @@ export default {
       { name: 'dns.fqdn.list', old: { value: fqdn } },
       { name: 'dns.record.list', inner_join_ref: { fqdn_list: 'api_fkey_dns_record_target_fqdn' } },
       { name: 'dnscfg.fqdn_type.list', old: { sorting_params_list: ['position'] } },
-      { name: 'dnscfg.record_inttype.list', old: { is_own: true, sorting_params_list: ['record_type'] } }
+      { name: 'dnscfg.record_inttype.list', old: { is_own: true, sorting_params_list: ['record_type'] } },
+      { name: 'dns.ip_addr.list', inner_join_ref: { record_list: 'default' } },
+      {
+        name: 'nd.ip_subnet.list',
+        inner_join_ref: { ip_addr_list: 'default' },
+        old: { sorting_params_list: ['type ASC', 'cidr ASC'] }
+      }
     ]
     return TransactionService.execute(config, ta)
   },
@@ -22,7 +28,13 @@ export default {
       { name: 'dns.fqdn.list', old: { value: fqdn } },
       { name: 'dns.record.list', old: { sorting_params_list: ['type', 'fqdn'] }, inner_join_ref: { fqdn_list: 'default' } },
       { name: 'dnscfg.fqdn_type.list', old: { sorting_params_list: ['position'] } },
-      { name: 'dnscfg.record_inttype.list', old: { is_own: true, sorting_params_list: ['record_type'] } }
+      { name: 'dnscfg.record_inttype.list', old: { is_own: true, sorting_params_list: ['record_type'] } },
+      { name: 'dns.ip_addr.list', inner_join_ref: { record_list: 'default' } },
+      {
+        name: 'nd.ip_subnet.list',
+        inner_join_ref: { ip_addr_list: 'default' },
+        old: { sorting_params_list: ['type ASC', 'cidr ASC'] }
+      }
     ]
     return TransactionService.execute(config, ta)
   },
@@ -32,7 +44,12 @@ export default {
       { name: 'dns.record.list', old: { sorting_params_list: ['type', 'fqdn'] }, inner_join_ref: {ip_addr_list: 'default'}},
       { name: 'dnscfg.fqdn_type.list', old: { sorting_params_list: ['position'] } },
       { name: 'dns.fqdn.list', inner_join_ref: { record_list: 'default' } },
-      { name: 'dnscfg.record_inttype.list', old: { is_own: true, sorting_params_list: ['record_type'] } }
+      { name: 'dnscfg.record_inttype.list', old: { is_own: true, sorting_params_list: ['record_type'] } },
+      {
+        name: 'nd.ip_subnet.list',
+        inner_join_ref: { ip_addr_list: 'default' },
+        old: { sorting_params_list: ['type ASC', 'cidr ASC'] }
+      }
     ]
     return TransactionService.execute(config, ta)
   },
diff --git a/frontend/src/components/DNSRecordTypeCard.vue b/frontend/src/components/DNSRecordTypeCard.vue
index 125bff2c54551ac8f63d22f905d2444513d2e554..95104fd36c261980140f8ab71cc187cc6fad0672 100644
--- a/frontend/src/components/DNSRecordTypeCard.vue
+++ b/frontend/src/components/DNSRecordTypeCard.vue
@@ -105,7 +105,7 @@
                   {{ item.fqdn_description }}
                 </b-td>
                 <b-td>
-                  <RRDataView :item="item"></RRDataView>
+                  <RRDataView :item="item" :subnets="subnets"></RRDataView>
                   <b-badge v-if="item.data in reserved_addrs_by_ip" variant="warning"
                            :title="$t('components.dns_record_type_card.address_is_reserved')">
                     {{ $t('components.dns_record_type_card.reserved') }}
@@ -114,7 +114,6 @@
                            v-if="bcd_has_v4 && bcd_has_v6 && record_type == 'A' && !fqdnHasAAAA(item.fqdn)"
                            variant="danger">{{ $t('components.dns_record_type_card.no_AAAA_record') }}
                   </b-badge>
-                  <IPAddressTypeBadge :subnets="subnets" :record_address="item.data"/>
                 </b-td>
                 <b-td>
                   <template v-if="item.ttl != null">{{ item.ttl }}s</template>
@@ -202,11 +201,10 @@ import BCDFreeAddressBlock from '@/components/BCDFreeAddressBlock'
 import transactionutil from '@/util/transactionutil'
 import RecordService from '@/api-services.gen/dns.record'
 import DBEditor from '@/components/DBEditor'
-import IPAddressTypeBadge from '@/components/IPAddressTypeBadge.vue'
 
 export default {
   name: 'DNSRecordTypeCard',
-  components: { IPAddressTypeBadge, DBEditor, BCDFreeAddressBlock, RecordInfo, RRDataView, FilterInput },
+  components: { DBEditor, BCDFreeAddressBlock, RecordInfo, RRDataView, FilterInput },
   data() {
     return {
       filter: '',
diff --git a/frontend/src/components/FQDNRecordTable.vue b/frontend/src/components/FQDNRecordTable.vue
index 591d888e443cb0ea0982c681e15bae9c31251b16..e8771bab6a00e6066b6190f2b010cf2e68d4b382 100644
--- a/frontend/src/components/FQDNRecordTable.vue
+++ b/frontend/src/components/FQDNRecordTable.vue
@@ -18,7 +18,7 @@
             </b-badge>
           </template>
           <template v-slot:cell(data)="data">
-            <RRDataView :item="data.item"></RRDataView>
+            <RRDataView :item="data.item" :subnets="subnets"></RRDataView>
           </template>
           <template v-slot:cell(actions)="data">
             <b-button-group>
@@ -129,6 +129,10 @@ export default {
     fqdn_rrs: Array,
     fqdn: {
       required: true
+    },
+    subnets: {
+      required: true,
+      type: Array
     }
   },
   computed: {
diff --git a/frontend/src/components/RRDataView.vue b/frontend/src/components/RRDataView.vue
index d68a9213c2e25bc062c15c4fe3a5c9f2a0b1837b..c25dfb4aefeeff714e88cb42d968082852307dbc 100644
--- a/frontend/src/components/RRDataView.vue
+++ b/frontend/src/components/RRDataView.vue
@@ -4,14 +4,22 @@
     <b-badge v-if="!item.target_is_singleton" variant="warning">{{ $t('components.rrdata_view.rr_set') }}</b-badge>
     <b-badge v-if="item.target_is_reverse_unique"
              :title="$t('components.rrdata_view.reverse_unique')">{{ $t('components.rrdata_view.ptr') }}</b-badge>
+    <IPAddressTypeBadge v-if="subnets" :subnets="subnets" :record_address="item.data"/>
   </span>
 </template>
 <script>
+import IPAddressTypeBadge from '@/components/IPAddressTypeBadge.vue'
+
 export default {
   name: 'RRDataView',
+  components: { IPAddressTypeBadge },
   props: {
     item: {
       required: true
+    },
+    subnets: {
+      required: true,
+      type: Array
     }
   }
 }
diff --git a/frontend/src/views/dnsvs/BCDRecords.vue b/frontend/src/views/dnsvs/BCDRecords.vue
index 91dede3669122e6193c79e43dea3e81c9c08362a..8f5e5877ee39e1d4a774b1a56792a72214dc9c6b 100644
--- a/frontend/src/views/dnsvs/BCDRecords.vue
+++ b/frontend/src/views/dnsvs/BCDRecords.vue
@@ -1,6 +1,7 @@
 <template>
   <div id="bcd-records">
     <Loading :data="bcd">
+      <template v-if="bcd"> <!-- WHY?! JUST WHYYYY??? IT WORKS EVERYWHERE ELSE!? -->
       <h1 class="my-4">
         {{ bcd.name }} <small class="text-muted">{{ $t('system.broadcast_domain') }}
         <b-badge variant="success" :title="$t('views.dnsvs.bcd_records.both_subnets')"
@@ -285,6 +286,7 @@
       </DBEditor>
       <EVLogViewer v-if="bcd" modal_id="evlog_bcd" :title="'BCD \''+ bcd.name + '\''"
                    ref_obj_fq="nd.bcd" :refobj_id_value="bcd.gpk"></EVLogViewer>
+      </template>
     </Loading>
   </div>
 </template>
diff --git a/frontend/src/views/dnsvs/ExternalRecords.vue b/frontend/src/views/dnsvs/ExternalRecords.vue
index 2b191e6254bb2258208bf90495d2ee26eb0c2840..51098fa05972c3884f02450cae41e7f1dada55ce 100644
--- a/frontend/src/views/dnsvs/ExternalRecords.vue
+++ b/frontend/src/views/dnsvs/ExternalRecords.vue
@@ -3,7 +3,7 @@
     <b-checkbox :value="true" :unchecked-value="null" v-model="own" switch>
       {{ $t('components.dnsvs_entry.show_only_own') }}
     </b-checkbox>
-    <FQDNRecordTable fqdn="null" :fqdn_rrs="records"></FQDNRecordTable>
+    <FQDNRecordTable fqdn="null" :fqdn_rrs="records" :subnets="[]"></FQDNRecordTable>
   </div>
 </template>
 
diff --git a/frontend/src/views/dnsvs/FQDNRecords.vue b/frontend/src/views/dnsvs/FQDNRecords.vue
index 1fd7081024c2d0790fb6a74f7ca6449c05b1ecb8..0bc5f2d54c13bf4943eeaf026c83a4761bc3daba 100644
--- a/frontend/src/views/dnsvs/FQDNRecords.vue
+++ b/frontend/src/views/dnsvs/FQDNRecords.vue
@@ -4,7 +4,7 @@
       v-if="$route.params.fqdn !== '$'">{{ $route.params.fqdn }}</span>'
     </h1>
     <FQDNRecordTable :full_edit_fqdn_reducer="full_edit_fqdn_reducer" :create_record_reducer="create_record_reducer"
-                     :fqdn_rrs="records" :fqdn="fqdn"></FQDNRecordTable>
+                     :fqdn_rrs="records" :fqdn="fqdn" :subnets="subnets"></FQDNRecordTable>
   </div>
 </template>
 
@@ -18,6 +18,7 @@ export default {
     return {
       records: null,
       fqdn: null,
+      subnets: null,
       full_edit_fqdn_reducer: null,
       create_record_reducer: null
     }
@@ -28,6 +29,7 @@ export default {
       const response = await FQDNRRService.getRecordsByFQDN(this.$store.state.netdb_axios_config, this.$route.params.fqdn)
       window.console.log(response)
       this.records = response.data.record_list
+      this.subnets = response.data.ip_subnet_list
       const fqdnSelections = {}
       for (const t of response.data.fqdn_type_list) {
         let disp_name = t.description
diff --git a/frontend/src/views/dnsvs/FQDNReferences.vue b/frontend/src/views/dnsvs/FQDNReferences.vue
index d56d6ce0b98bc6b91ff8df879b829f0b3ce89b6d..b9ecbc1bd5f5979fb2c00b38d30bf789c3b5f699 100644
--- a/frontend/src/views/dnsvs/FQDNReferences.vue
+++ b/frontend/src/views/dnsvs/FQDNReferences.vue
@@ -7,6 +7,7 @@
     <FQDNRecordTable :fqdn_rrs="records" :fqdn="fqdn"
                      :full_edit_fqdn_reducer="full_edit_fqdn_reducer"
                      :create_record_reducer="create_record_reducer"
+                     :subnets="subnets"
     ></FQDNRecordTable>
   </div>
 </template>
@@ -21,6 +22,7 @@ export default {
     return {
       records: null,
       fqdn: null,
+      subnets: null,
       full_edit_fqdn_reducer: null,
       create_record_reducer: null
     }
@@ -37,6 +39,7 @@ export default {
       const response = await RRService.getRecordsByTargetFQDN(this.$store.state.netdb_axios_config, this.$route.params.fqdn)
       this.fqdn = response.data.fqdn_list[0]
       this.records = response.data.record_list
+      this.subnets = response.data.ip_subnet_list
       const fqdnSelections = {}
       for (const t of response.data.fqdn_type_list) {
         let disp_name = t.description
diff --git a/frontend/src/views/dnsvs/IPRecords.vue b/frontend/src/views/dnsvs/IPRecords.vue
index 2cafbae18405445d3ad1dbfcadd560938d3c1997..67a142f27469874ab3dadb3e632b2b0e558fda82 100644
--- a/frontend/src/views/dnsvs/IPRecords.vue
+++ b/frontend/src/views/dnsvs/IPRecords.vue
@@ -2,7 +2,7 @@
   <div class="IPRecords">
     <h1>{{ $t('views.dnsvs.ip_records.records_to_ip') }} <code>{{ $route.params.ip }}</code></h1>
     <FQDNRecordTable :full_edit_fqdn_reducer="full_edit_fqdn_reducer" :create_record_reducer="create_record_reducer"
-                     :fqdn_rrs="records" :fqdn="fqdn"></FQDNRecordTable>
+                     :fqdn_rrs="records" :fqdn="fqdn" :subnets="subnets"></FQDNRecordTable>
   </div>
 </template>
 
@@ -16,6 +16,7 @@ export default {
     return {
       records: null,
       fqdn: null,
+      subnets: null,
       full_edit_fqdn_reducer: null,
       create_record_reducer: null
     }
@@ -25,6 +26,7 @@ export default {
       this.records = null
       const response = await FQDNRRService.getRecordsByIP(this.$store.state.netdb_axios_config, this.$route.params.ip)
       this.records = response.data.record_list
+      this.subnets = response.data.ip_subnet_list
       const fqdnSelections = {}
       for (const t of response.data.fqdn_type_list) {
         let disp_name = t.description