@@ -84,6 +84,8 @@ my $TIME_CONNECTION = 10;
84
84
my $TYPE ;
85
85
my $CREATE ;
86
86
87
+ my $CHANGE_NETWORK_FORWARD ;
88
+
87
89
my $USAGE = " $0 "
88
90
." [--debug] [--config=$FILE_CONFIG_DEFAULT ] [--add-user=name] [--add-user-ldap=name]"
89
91
." [--add-user-file=filename]"
@@ -94,6 +96,7 @@ my $USAGE = "$0 "
94
96
." [--remove-user=name]"
95
97
." [--clean-db-leftovers]"
96
98
." [--log=pathname]"
99
+ ." [--set-network-forward=(nat|none)]"
97
100
." \n "
98
101
." --add-user : adds a new db user\n "
99
102
." --add-user-ldap : adds a new LDAP user\n "
@@ -124,6 +127,8 @@ my $USAGE = "$0 "
124
127
." --restore file1 file2 ... fileN\n "
125
128
." --migrate node machine1 machine2 ... machineN\n "
126
129
." \n "
130
+ ." Operations on networks:\n "
131
+ ." --change-network-forward=[nat|none]"
127
132
." Operations modifiers:\n "
128
133
." --all : execute on all virtual machines\n "
129
134
." For hibernate, it is executed on all the actives\n "
@@ -196,6 +201,8 @@ GetOptions ( help => \$help
196
201
," time-connection=s" => \$TIME_CONNECTION
197
202
," type=s" => \$TYPE
198
203
," create" => \$CREATE
204
+
205
+ ," change-network-forward=s" => \$CHANGE_NETWORK_FORWARD
199
206
) or exit ;
200
207
201
208
$START = 1 if $DEBUG || $FILE_CONFIG || $NOFORK ;
@@ -228,6 +235,9 @@ die "ERROR: Supply either --all or --disconnected or --active\n"
228
235
if ( $ALL && ( $DISCONNECTED || $ACTIVE ))
229
236
|| ( $DISCONNECTED && ( $ALL || $ACTIVE ));
230
237
238
+ die " ERROR: Network forward mode must be nat or none.\n "
239
+ if $CHANGE_NETWORK_FORWARD && $CHANGE_NETWORK_FORWARD !~ / ^(nat|none)$ / ;
240
+
231
241
my %CONFIG ;
232
242
%CONFIG = ( config => $FILE_CONFIG ) if $FILE_CONFIG ;
233
243
@@ -1329,6 +1339,32 @@ sub upload_group_members($file) {
1329
1339
}
1330
1340
}
1331
1341
1342
+ sub change_network_forward ($rvd_back ) {
1343
+
1344
+ my $sth = $rvd_back -> _dbh-> prepare(
1345
+ " SELECT id,id_vm FROM virtual_networks WHERE name=?"
1346
+ );
1347
+
1348
+ die " Error: No network names supplied.\n " if !@ARGV ;
1349
+
1350
+ for my $name (@ARGV ) {
1351
+ $sth -> execute($name );
1352
+ my ($id_network , $id_vm ) = $sth -> fetchrow;
1353
+ if (!$id_network ) {
1354
+ warn " Error: network $name not found.\n " ;
1355
+ next ;
1356
+ }
1357
+ my $vm = Ravada::VM-> open ($id_vm );
1358
+
1359
+ my ($network ) = grep { $_ -> {id } == $id_network } $vm -> list_virtual_networks();
1360
+ $network -> {forward_mode } = $CHANGE_NETWORK_FORWARD ;
1361
+ Ravada::Request-> change_network(
1362
+ uid => Ravada::Utils::user_daemon-> id
1363
+ ,data => $network
1364
+ );
1365
+ }
1366
+ }
1367
+
1332
1368
sub DESTROY {
1333
1369
}
1334
1370
@@ -1383,6 +1419,8 @@ purge_nodes($rvd_back) if $PURGE_NODES;
1383
1419
1384
1420
list_unused_vols($rvd_back ) if $LIST_UNUSED_VOLS ;
1385
1421
show_volume($rvd_back ) if $SHOW_VOLUME ;
1422
+
1423
+ change_network_forward($rvd_back ) if $CHANGE_NETWORK_FORWARD
1386
1424
}
1387
1425
1388
1426
0 commit comments