@@ -1305,6 +1305,53 @@ int sock_rai(int socket_id, bool rai_last, bool rai_no_data,
1305
1305
return 0 ;
1306
1306
}
1307
1307
1308
+ int sock_setopt (int socket_id , int sock_level , int sock_opt_id , int sock_opt_value )
1309
+ {
1310
+ struct sock_info * socket_info = get_socket_info_by_id (socket_id );
1311
+ int err ;
1312
+
1313
+ if (socket_info == NULL ) {
1314
+ return - EINVAL ;
1315
+ }
1316
+
1317
+ err = setsockopt (socket_info -> fd , sock_level , sock_opt_id , & sock_opt_value ,
1318
+ sizeof (sock_opt_value ));
1319
+
1320
+ if (err ) {
1321
+ mosh_error ("setsockopt() for level=%d, option=%d, value=%d failed with error %d" ,
1322
+ sock_level , sock_opt_id , sock_opt_value , errno );
1323
+ }
1324
+
1325
+ return err ;
1326
+ }
1327
+
1328
+ int sock_getopt (int socket_id , int sock_level , int sock_opt_id )
1329
+ {
1330
+ struct sock_info * socket_info = get_socket_info_by_id (socket_id );
1331
+ int err ;
1332
+ int sock_opt_value = 0 ;
1333
+ int sock_opt_value_len = sizeof (sock_opt_value );
1334
+
1335
+ if (socket_info == NULL ) {
1336
+ return - EINVAL ;
1337
+ }
1338
+
1339
+ err = getsockopt (socket_info -> fd , sock_level , sock_opt_id , & sock_opt_value ,
1340
+ & sock_opt_value_len );
1341
+
1342
+ if (err ) {
1343
+ mosh_error (
1344
+ "getsockopt() socket_id=%d, level=%d, option=%d failed with error %d" ,
1345
+ socket_id , sock_level , sock_opt_id , errno );
1346
+ } else {
1347
+ mosh_print (
1348
+ "getsockopt() socket_id=%d, option=%d, level=%d, value=%d" ,
1349
+ socket_id , sock_opt_id , sock_level , sock_opt_value );
1350
+ }
1351
+
1352
+ return err ;
1353
+ }
1354
+
1308
1355
int sock_list (void )
1309
1356
{
1310
1357
bool opened_sockets = false;
0 commit comments