bfg-common 1.3.222 → 1.3.224

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/assets/localization/local_ru.json +1 -1
  2. package/components/atoms/alert/Alert.vue +95 -95
  3. package/components/atoms/alert/Notification.vue +170 -170
  4. package/components/atoms/switch/Switch.vue +111 -111
  5. package/components/atoms/table/compact/Compact.vue +526 -526
  6. package/components/atoms/tooltip/Signpost.vue +225 -225
  7. package/components/common/diagramMain/DiagramMain.vue +4 -4
  8. package/components/common/diagramMain/lib/models/interfaces.ts +52 -22
  9. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +3 -3
  10. package/components/common/diagramMain/port/Port.vue +16 -16
  11. package/components/common/pages/Tasks.vue +120 -120
  12. package/components/common/recursionTree/RecursionTree.vue +203 -203
  13. package/components/common/vm/actions/add/Add.vue +575 -575
  14. package/components/common/vm/actions/clone/Clone.vue +518 -518
  15. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +269 -269
  16. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +693 -693
  17. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuModel.vue +220 -220
  18. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +59 -59
  19. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +294 -294
  20. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +165 -165
  21. package/components/common/vm/actions/common/select/storage/lib/config/config.ts +166 -166
  22. package/components/common/vm/actions/editSettings/EditSettings.vue +313 -313
  23. package/components/common/weekSelect/WeekSelect.vue +112 -112
  24. package/components/common/weekSelect/lib/config/options.ts +10 -10
  25. package/components/common/wizards/network/add/lib/config/sendData.ts +14 -14
  26. package/components/common/wizards/network/add/lib/models/enums.ts +3 -3
  27. package/components/common/wizards/network/add/lib/models/interfaces.ts +12 -12
  28. package/components/common/wizards/network/add/steps/IpFourSettings.vue +9 -9
  29. package/composables/useAppVersion.ts +21 -21
  30. package/composables/useEnvLanguage.ts +20 -20
  31. package/lib/utils/sendTask.ts +72 -72
  32. package/minify.js +146 -146
  33. package/package.json +1 -1
  34. package/public/spice-console/application/codec.js +257 -257
  35. package/public/spice-console/lib/rasterEngine.js +907 -907
  36. package/public/spice-console/network/spicechannel.js +369 -369
  37. package/store/main/lib/interfaces.ts +9 -9
  38. package/store/tasks/actions.ts +133 -133
  39. package/store/tasks/getters.ts +25 -25
  40. package/store/tasks/lib/models/interfaces.ts +18 -18
  41. package/store/tasks/mutations.ts +58 -58
  42. package/store/tasks/state.ts +16 -16
@@ -1,225 +1,225 @@
1
- <template>
2
- <div
3
- id="signpost"
4
- :class="['signpost', signpostClass]"
5
- :style="signpostStyles"
6
- @click.stop
7
- @mouseenter="hovered = true"
8
- @mouseleave="hovered = false"
9
- >
10
- <div class="signpost-wrap">
11
- <div class="popover-pointer" />
12
- <div class="signpost-content-header">
13
- <button
14
- :id="`${props.testId}-close-icon`"
15
- class="signpost-action close"
16
- @click="hide"
17
- >
18
- <atoms-the-icon class="close-icon" name="close" />
19
- </button>
20
- </div>
21
- <div class="signpost-content-body">
22
- <slot />
23
- </div>
24
- </div>
25
- </div>
26
- </template>
27
-
28
- <script setup lang="ts">
29
- import { UI_I_ElPosition } from '~/components/atoms/tooltip/lib/models/interfaces'
30
- const props = withDefaults(
31
- defineProps<{
32
- elemId: string
33
- testId?: string
34
- }>(),
35
- { testId: 'ui-signpost' }
36
- )
37
- const emits = defineEmits<{
38
- (event: 'hide'): void
39
- }>()
40
- const hide = (): void => {
41
- emits('hide')
42
- }
43
-
44
- const signpostStyles = ref<UI_I_ElPosition | null>(null)
45
- watch(
46
- () => props.elemId,
47
- (newValue: string) => {
48
- const element =
49
- (document.getElementById(newValue) as HTMLDivElement) || null
50
- const { width, x, y } = element.getBoundingClientRect()
51
-
52
- signpostStyles.value = {
53
- top: `${y}px`,
54
- left: `${x + width / 2}px`,
55
- }
56
- setTimeout(() => {
57
- setSignpostPosition()
58
- }, 0)
59
- },
60
- { immediate: true }
61
- )
62
- const signpostClass = ref<string[]>([])
63
- const setSignpostPosition = (): void => {
64
- const signpost =
65
- (document.getElementById('signpost') as HTMLDivElement) || null
66
- const signpostRect = (signpost?.getBoundingClientRect() as DOMRect) || null
67
-
68
- type PositionX = 'right' | 'left'
69
- let positionX: PositionX = 'right'
70
-
71
- type PositionY = 'top' | 'middle'
72
- let positionY: PositionY = 'middle'
73
-
74
- const isOutRight = signpostRect.left + signpostRect.width > window.innerWidth
75
- const isOutTop = signpostRect.top < 0
76
-
77
- if (isOutTop) {
78
- positionY = 'top'
79
- }
80
- if (isOutRight) {
81
- positionX = 'left'
82
- }
83
-
84
- signpostClass.value.push(positionY)
85
- signpostClass.value.push(positionX)
86
- signpostClass.value.push('show')
87
- }
88
-
89
- const hovered = ref<boolean>(false)
90
- const windowClick = (): void => {
91
- hide()
92
- }
93
- const windowScroll = (): void => {
94
- if (hovered.value) {
95
- return
96
- }
97
- hide()
98
- }
99
- onMounted(() => {
100
- setTimeout(() => {
101
- window.addEventListener('click', windowClick)
102
- window.addEventListener('scroll', windowScroll, true)
103
- })
104
- })
105
- onUnmounted(() => {
106
- window.removeEventListener('click', windowClick)
107
- window.removeEventListener('scroll', windowScroll, true)
108
- })
109
- </script>
110
-
111
- <style scoped lang="scss">
112
- .signpost {
113
- opacity: 0;
114
- position: fixed;
115
- cursor: default;
116
- transform: translateY(calc(-50% + 14px)) translateX(20px);
117
- z-index: 1000000000;
118
-
119
- &.show {
120
- opacity: 1;
121
- }
122
- &.left {
123
- transform: translateY(calc(-50% + 14px)) translateX(calc(-100% - 20px));
124
-
125
- .signpost-wrap {
126
- .popover-pointer {
127
- left: 100%;
128
- border-right: unset;
129
- border-left: 12px solid var(--signpost-border-color);
130
-
131
- &::before {
132
- border-right: unset;
133
- border-left: 12px solid var(--signpost-bgcolor);
134
- left: unset;
135
- right: 2px;
136
- }
137
- }
138
- }
139
- }
140
- &.top {
141
- transform: translateY(calc(0% + 10px)) translateX(20px);
142
-
143
- &.left {
144
- transform: translateY(calc(0% + 10px)) translateX(calc(-100% - 20px));
145
-
146
- .popover-pointer {
147
- top: 5px;
148
- }
149
- }
150
-
151
- .signpost-wrap {
152
- .popover-pointer {
153
- top: 5px;
154
- }
155
- }
156
- }
157
-
158
- .signpost-wrap {
159
- border-radius: 3px;
160
- border: 1px solid var(--signpost-border-color);
161
- background-color: var(--signpost-bgcolor);
162
- position: relative;
163
-
164
- .popover-pointer {
165
- border-bottom: 12px solid transparent;
166
- top: 50%;
167
- transform: translateY(-50%);
168
- border-right: 12px solid var(--signpost-border-color);
169
- left: -12px;
170
- height: 0;
171
- width: 0;
172
- position: absolute;
173
-
174
- &::before {
175
- border-bottom: 12px solid transparent;
176
- top: 1px;
177
- border-right: 12px solid var(--signpost-bgcolor);
178
- left: 2px;
179
- content: '';
180
- height: 0;
181
- width: 0;
182
- position: absolute;
183
- }
184
- }
185
-
186
- .signpost-content-header {
187
- display: flex;
188
- justify-content: flex-end;
189
- position: absolute;
190
- width: 100%;
191
- background-color: inherit;
192
- top: 0;
193
-
194
- button {
195
- line-height: 24px;
196
-
197
- .close-icon {
198
- width: 16px;
199
- height: 16px;
200
- }
201
- }
202
- }
203
-
204
- .signpost-content-body {
205
- padding: 24px;
206
- max-height: 480px;
207
- overflow-y: auto;
208
- text-transform: none;
209
- }
210
- }
211
- }
212
- </style>
213
-
214
- <style>
215
- :root {
216
- --signpost-bgcolor: #fff;
217
- --signpost-border-color: #b3b3b3;
218
- --signpost-color: #acbac3;
219
- }
220
- :root.dark-theme {
221
- --signpost-bgcolor: #21333b;
222
- --signpost-border-color: #000;
223
- --signpost-color: #acbac3;
224
- }
225
- </style>
1
+ <template>
2
+ <div
3
+ id="signpost"
4
+ :class="['signpost', signpostClass]"
5
+ :style="signpostStyles"
6
+ @click.stop
7
+ @mouseenter="hovered = true"
8
+ @mouseleave="hovered = false"
9
+ >
10
+ <div class="signpost-wrap">
11
+ <div class="popover-pointer" />
12
+ <div class="signpost-content-header">
13
+ <button
14
+ :id="`${props.testId}-close-icon`"
15
+ class="signpost-action close"
16
+ @click="hide"
17
+ >
18
+ <atoms-the-icon class="close-icon" name="close" />
19
+ </button>
20
+ </div>
21
+ <div class="signpost-content-body">
22
+ <slot />
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script setup lang="ts">
29
+ import { UI_I_ElPosition } from '~/components/atoms/tooltip/lib/models/interfaces'
30
+ const props = withDefaults(
31
+ defineProps<{
32
+ elemId: string
33
+ testId?: string
34
+ }>(),
35
+ { testId: 'ui-signpost' }
36
+ )
37
+ const emits = defineEmits<{
38
+ (event: 'hide'): void
39
+ }>()
40
+ const hide = (): void => {
41
+ emits('hide')
42
+ }
43
+
44
+ const signpostStyles = ref<UI_I_ElPosition | null>(null)
45
+ watch(
46
+ () => props.elemId,
47
+ (newValue: string) => {
48
+ const element =
49
+ (document.getElementById(newValue) as HTMLDivElement) || null
50
+ const { width, x, y } = element.getBoundingClientRect()
51
+
52
+ signpostStyles.value = {
53
+ top: `${y}px`,
54
+ left: `${x + width / 2}px`,
55
+ }
56
+ setTimeout(() => {
57
+ setSignpostPosition()
58
+ }, 0)
59
+ },
60
+ { immediate: true }
61
+ )
62
+ const signpostClass = ref<string[]>([])
63
+ const setSignpostPosition = (): void => {
64
+ const signpost =
65
+ (document.getElementById('signpost') as HTMLDivElement) || null
66
+ const signpostRect = (signpost?.getBoundingClientRect() as DOMRect) || null
67
+
68
+ type PositionX = 'right' | 'left'
69
+ let positionX: PositionX = 'right'
70
+
71
+ type PositionY = 'top' | 'middle'
72
+ let positionY: PositionY = 'middle'
73
+
74
+ const isOutRight = signpostRect.left + signpostRect.width > window.innerWidth
75
+ const isOutTop = signpostRect.top < 0
76
+
77
+ if (isOutTop) {
78
+ positionY = 'top'
79
+ }
80
+ if (isOutRight) {
81
+ positionX = 'left'
82
+ }
83
+
84
+ signpostClass.value.push(positionY)
85
+ signpostClass.value.push(positionX)
86
+ signpostClass.value.push('show')
87
+ }
88
+
89
+ const hovered = ref<boolean>(false)
90
+ const windowClick = (): void => {
91
+ hide()
92
+ }
93
+ const windowScroll = (): void => {
94
+ if (hovered.value) {
95
+ return
96
+ }
97
+ hide()
98
+ }
99
+ onMounted(() => {
100
+ setTimeout(() => {
101
+ window.addEventListener('click', windowClick)
102
+ window.addEventListener('scroll', windowScroll, true)
103
+ })
104
+ })
105
+ onUnmounted(() => {
106
+ window.removeEventListener('click', windowClick)
107
+ window.removeEventListener('scroll', windowScroll, true)
108
+ })
109
+ </script>
110
+
111
+ <style scoped lang="scss">
112
+ .signpost {
113
+ opacity: 0;
114
+ position: fixed;
115
+ cursor: default;
116
+ transform: translateY(calc(-50% + 14px)) translateX(20px);
117
+ z-index: 1000000000;
118
+
119
+ &.show {
120
+ opacity: 1;
121
+ }
122
+ &.left {
123
+ transform: translateY(calc(-50% + 14px)) translateX(calc(-100% - 20px));
124
+
125
+ .signpost-wrap {
126
+ .popover-pointer {
127
+ left: 100%;
128
+ border-right: unset;
129
+ border-left: 12px solid var(--signpost-border-color);
130
+
131
+ &::before {
132
+ border-right: unset;
133
+ border-left: 12px solid var(--signpost-bgcolor);
134
+ left: unset;
135
+ right: 2px;
136
+ }
137
+ }
138
+ }
139
+ }
140
+ &.top {
141
+ transform: translateY(calc(0% + 10px)) translateX(20px);
142
+
143
+ &.left {
144
+ transform: translateY(calc(0% + 10px)) translateX(calc(-100% - 20px));
145
+
146
+ .popover-pointer {
147
+ top: 5px;
148
+ }
149
+ }
150
+
151
+ .signpost-wrap {
152
+ .popover-pointer {
153
+ top: 5px;
154
+ }
155
+ }
156
+ }
157
+
158
+ .signpost-wrap {
159
+ border-radius: 3px;
160
+ border: 1px solid var(--signpost-border-color);
161
+ background-color: var(--signpost-bgcolor);
162
+ position: relative;
163
+
164
+ .popover-pointer {
165
+ border-bottom: 12px solid transparent;
166
+ top: 50%;
167
+ transform: translateY(-50%);
168
+ border-right: 12px solid var(--signpost-border-color);
169
+ left: -12px;
170
+ height: 0;
171
+ width: 0;
172
+ position: absolute;
173
+
174
+ &::before {
175
+ border-bottom: 12px solid transparent;
176
+ top: 1px;
177
+ border-right: 12px solid var(--signpost-bgcolor);
178
+ left: 2px;
179
+ content: '';
180
+ height: 0;
181
+ width: 0;
182
+ position: absolute;
183
+ }
184
+ }
185
+
186
+ .signpost-content-header {
187
+ display: flex;
188
+ justify-content: flex-end;
189
+ position: absolute;
190
+ width: 100%;
191
+ background-color: inherit;
192
+ top: 0;
193
+
194
+ button {
195
+ line-height: 24px;
196
+
197
+ .close-icon {
198
+ width: 16px;
199
+ height: 16px;
200
+ }
201
+ }
202
+ }
203
+
204
+ .signpost-content-body {
205
+ padding: 24px;
206
+ max-height: 480px;
207
+ overflow-y: auto;
208
+ text-transform: none;
209
+ }
210
+ }
211
+ }
212
+ </style>
213
+
214
+ <style>
215
+ :root {
216
+ --signpost-bgcolor: #fff;
217
+ --signpost-border-color: #b3b3b3;
218
+ --signpost-color: #acbac3;
219
+ }
220
+ :root.dark-theme {
221
+ --signpost-bgcolor: #21333b;
222
+ --signpost-border-color: #000;
223
+ --signpost-color: #acbac3;
224
+ }
225
+ </style>
@@ -711,10 +711,10 @@ const countNetworksPositions = (): UI_I_NetworksWithPositions[] => {
711
711
  })
712
712
  : (network.sysx && [
713
713
  {
714
- id: network.sysx?.name,
715
- name: `${network.sysx?.name} ${
716
- !network.sysx.tcp_config.auto
717
- ? `: ${network.sysx.tcp_config.ipv4}`
714
+ id: network.sysx?.id,
715
+ name: `${network.sysx?.id} ${
716
+ !network.sysx.ipv4_settings.auto
717
+ ? `: ${network.sysx.ipv4_settings.ipv4}`
718
718
  : ''
719
719
  }`,
720
720
  portPosition:
@@ -65,28 +65,62 @@ export interface UI_I_SelectedAdapter {
65
65
  }
66
66
 
67
67
  export interface UI_I_Sysx {
68
- mtu: number
69
- name: string
68
+ id: string
69
+ state: UI_I_State
70
+ index: UI_I_ListIndex
71
+ switch: string
72
+ network_id: string
73
+ tcp_stack: string
70
74
  services: {
71
- fault_tolerance_logging: boolean
72
- management: boolean
73
- nvme_over_rdma: boolean
74
- nvme_over_tcp: boolean
75
- provisioning: boolean
76
- vmotion: boolean
77
- vsan: boolean
78
- vsphere_backup_nfc: boolean
79
- vsphere_replication: boolean
80
- vsphere_replication_nfc: boolean
75
+ // New interface
76
+ Management: boolean
77
+ VMotion: boolean
78
+ Provisioning: boolean
79
+ VSAN: boolean
80
+ FaultToleranceLogging: boolean
81
+ VSphereReplication: boolean
82
+ VSphereReplicationNFC: boolean
83
+ VSphereBackupNFC: boolean
84
+ NVMeOverTCP: boolean
85
+ NVMeOverRDMA: boolean
86
+
87
+ // management: boolean
88
+ // vmotion: boolean
89
+ // provisioning: boolean
90
+ // vsan: boolean
91
+ // fault_tolerance_logging: boolean
92
+ // vsphere_replication: boolean
93
+ // vsphere_replication_nfc: boolean
94
+ // vsphere_backup_nfc: boolean
95
+ // nvme_over_tcp: boolean
96
+ // nvme_over_rdma: boolean
81
97
  }
82
- tcp_config: {
98
+ mtu: number
99
+ ipv4_settings: {
83
100
  auto: boolean
84
- gateway: string
85
- gateway_override: boolean
86
101
  ipv4: string
87
- net_mask: string
102
+ mask: string
103
+ gateway_override: boolean
104
+ gateway: string
105
+ routing_table: number
88
106
  }
89
- tcp_stack: string
107
+
108
+ // name: string
109
+ // tcp_config: {
110
+ // auto: boolean
111
+ // ipv4: string
112
+ // net_mask: string
113
+ // gateway_override: boolean
114
+ // gateway: string
115
+
116
+ // New interface
117
+ // auto: boolean
118
+ // ipv4: string
119
+ // mask: string
120
+ // gateway_override: boolean
121
+ // gateway: string
122
+ // routing_table: number
123
+ // }
90
124
  }
91
125
 
92
126
  export interface UI_I_OverrideValue<T = string | number | boolean> {
@@ -212,7 +246,6 @@ export interface UI_I_ToggleDiagramAdaptersPayload {
212
246
  paths: string[]
213
247
  }
214
248
 
215
- // TODO important
216
249
  export interface UI_I_SecurityFields {
217
250
  promiscuousMode: {
218
251
  checked: boolean
@@ -470,12 +503,10 @@ export interface UI_I_ModalTabs {
470
503
  value: number
471
504
  }
472
505
 
473
- // TODO important
474
506
  export interface API_UI_I_Security {
475
507
  forged_transmits?: UI_E_IYNOption
476
508
  mac_change?: UI_E_IYNOption
477
509
  promiscuous?: UI_E_IYNOption
478
- // TODO Question about those
479
510
  promiscuous_computed?: UI_E_IYNOption
480
511
  mac_change_computed?: UI_E_IYNOption
481
512
  forged_transmits_computed?: UI_E_IYNOption
@@ -497,7 +528,6 @@ export interface API_UI_I_Teaming {
497
528
  link_detection_mode?: UI_E_ICBLinkDetectionMode
498
529
  notify_switches?: UI_E_IYNOption
499
530
  failback?: UI_E_IYNOption
500
- // TODO Question about those
501
531
  mode_computed?: UI_E_IBSTLoadBalancingMode
502
532
  link_detection_mode_computed?: UI_E_ICBLinkDetectionMode
503
533
  notify_switches_computed?: UI_E_IYNOption
@@ -612,7 +642,7 @@ export interface API_UI_I_Network {
612
642
  active_ports?: number
613
643
  nics_overrided?: boolean
614
644
  vm_list?: API_UI_I_NetworkVMList[]
615
- sysx_id?: UI_I_Sysx
645
+ sysx?: UI_I_Sysx
616
646
  security: API_UI_I_Security
617
647
  shaping: API_UI_I_Shaping
618
648
  teaming: API_UI_I_Teaming
@@ -231,14 +231,14 @@ watch(
231
231
  !vmKernelNetworksIdOnSwitch.includes(net.id)
232
232
  )
233
233
  .map((net: UI_I_Network, index: number) => ({
234
- name: net.sysx?.name || '',
234
+ name: net.sysx?.id || '',
235
235
  networkLabel: net.title,
236
236
  switch: net.switchName || '',
237
- ipAddress: net.sysx?.tcp_config.ipv4 || '--',
237
+ ipAddress: net.sysx?.ipv4_settings.ipv4 || '--',
238
238
  tcp: net.sysx?.tcp_stack
239
239
  ? localization.value[net.sysx?.tcp_stack]
240
240
  : '--',
241
- id: `${net.sysx?.name || ''}-${index}`,
241
+ id: `${net.sysx?.id || ''}-${index}`,
242
242
  }))
243
243
  },
244
244
  { deep: true, immediate: true }
@@ -250,31 +250,31 @@ const onShowModalWithTypeCheck = (value: string) => {
250
250
 
251
251
  if (isVmKernel.value) {
252
252
  onShowModal(value, {
253
- portName: props.network.sysx?.name,
253
+ portName: props.network.sysx?.id,
254
254
  networkLabel: props.network.title,
255
255
  vlanId: props.network.vlanId,
256
256
  tcpIp: props.network.sysx?.tcp_stack,
257
257
  mtu: props.network.sysx?.mtu,
258
258
  services: {
259
- vMotion: props.network.sysx?.services.vmotion,
260
- provisioning: props.network.sysx?.services.provisioning,
259
+ vMotion: props.network.sysx?.services.VMotion,
260
+ provisioning: props.network.sysx?.services.Provisioning,
261
261
  faultToleranceLogging:
262
- props.network.sysx?.services.fault_tolerance_logging,
263
- management: props.network.sysx?.services.management,
264
- replication: props.network.sysx?.services.vsphere_replication,
265
- replicationNFC: props.network.sysx?.services.vsphere_replication_nfc,
266
- vSAN: props.network.sysx?.services.vsan,
267
- backupNFC: props.network.sysx?.services.vsphere_backup_nfc,
268
- nVMeOverTCP: props.network.sysx?.services.nvme_over_tcp,
269
- nVMeOverRDMA: props.network.sysx?.services.nvme_over_rdma,
262
+ props.network.sysx?.services.FaultToleranceLogging,
263
+ management: props.network.sysx?.services.Management,
264
+ replication: props.network.sysx?.services.VSphereReplication,
265
+ replicationNFC: props.network.sysx?.services.VSphereReplicationNFC,
266
+ vSAN: props.network.sysx?.services.VSAN,
267
+ backupNFC: props.network.sysx?.services.VSphereBackupNFC,
268
+ nVMeOverTCP: props.network.sysx?.services.NVMeOverTCP,
269
+ nVMeOverRDMA: props.network.sysx?.services.NVMeOverRDMA,
270
270
  },
271
271
  tcpConfig: {
272
- ipv4Settings: props.network.sysx?.tcp_config.auto ? '0' : '1',
273
- ipv4Address: props.network.sysx?.tcp_config.ipv4,
274
- subnetMask: props.network.sysx?.tcp_config.net_mask,
272
+ ipv4Settings: props.network.sysx?.ipv4_settings.auto ? '0' : '1',
273
+ ipv4Address: props.network.sysx?.ipv4_settings.ipv4,
274
+ subnetMask: props.network.sysx?.ipv4_settings.net_mask,
275
275
  defaultGateway: {
276
- checked: props.network.sysx?.tcp_config.gateway_override,
277
- value: props.network.sysx?.tcp_config.gateway,
276
+ checked: props.network.sysx?.ipv4_settings.gateway_override,
277
+ value: props.network.sysx?.ipv4_settings.gateway,
278
278
  },
279
279
  },
280
280
  })