monitor: Add host_net_remove arguments completion
Relies on readline unique completion strings patch to make the added vlan/hub completion values unique, instead of using something like a hash table. Signed-off-by: Hani Benhabiles <hani@linux.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
		
							parent
							
								
									e70871d8b5
								
							
						
					
					
						commit
						ddd6b45ce2
					
				| @ -1227,6 +1227,7 @@ ETEXI | ||||
|         .params     = "vlan_id name", | ||||
|         .help       = "remove host VLAN client", | ||||
|         .mhandler.cmd = net_host_device_remove, | ||||
|         .command_completion = host_net_remove_completion, | ||||
|     }, | ||||
| 
 | ||||
| STEXI | ||||
|  | ||||
							
								
								
									
										2
									
								
								hmp.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								hmp.h
									
									
									
									
									
								
							| @ -110,5 +110,7 @@ void watchdog_action_completion(ReadLineState *rs, int nb_args, | ||||
| void migrate_set_capability_completion(ReadLineState *rs, int nb_args, | ||||
|                                        const char *str); | ||||
| void host_net_add_completion(ReadLineState *rs, int nb_args, const char *str); | ||||
| void host_net_remove_completion(ReadLineState *rs, int nb_args, | ||||
|                                 const char *str); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										38
									
								
								monitor.c
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								monitor.c
									
									
									
									
									
								
							| @ -4610,6 +4610,44 @@ void host_net_add_completion(ReadLineState *rs, int nb_args, const char *str) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void host_net_remove_completion(ReadLineState *rs, int nb_args, const char *str) | ||||
| { | ||||
|     NetClientState *ncs[255]; | ||||
|     int count, i, len; | ||||
| 
 | ||||
|     len = strlen(str); | ||||
|     readline_set_completion_index(rs, len); | ||||
|     if (nb_args == 2) { | ||||
|         count = qemu_find_net_clients_except(NULL, ncs, | ||||
|                                              NET_CLIENT_OPTIONS_KIND_NONE, 255); | ||||
|         for (i = 0; i < count; i++) { | ||||
|             int id; | ||||
|             char name[16]; | ||||
| 
 | ||||
|             if (net_hub_id_for_client(ncs[i], &id)) { | ||||
|                 continue; | ||||
|             } | ||||
|             snprintf(name, sizeof(name), "%d", id); | ||||
|             if (!strncmp(str, name, len)) { | ||||
|                 readline_add_completion(rs, name); | ||||
|             } | ||||
|         } | ||||
|         return; | ||||
|     } else if (nb_args == 3) { | ||||
|         count = qemu_find_net_clients_except(NULL, ncs, | ||||
|                                              NET_CLIENT_OPTIONS_KIND_NIC, 255); | ||||
|         for (i = 0; i < count; i++) { | ||||
|             const char *name; | ||||
| 
 | ||||
|             name = ncs[i]->name; | ||||
|             if (!strncmp(str, name, len)) { | ||||
|                 readline_add_completion(rs, name); | ||||
|             } | ||||
|         } | ||||
|         return; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| static void monitor_find_completion_by_table(Monitor *mon, | ||||
|                                              const mon_cmd_t *cmd_table, | ||||
|                                              char **args, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Hani Benhabiles
						Hani Benhabiles