Maxim Samoylov, le ven. 26 oct. 2018 03:03:43 +0300, a ecrit: > +void hmp_ipv6_hostfwd_remove(Monitor *mon, const QDict *qdict) > +{
Similarly, a lot can be shared, by introducing const char *hmp_hostfwd_lookup(Monitor *mon, const QDict *qdict, int is_v6) which will contain all the lookup and tcp/udp parsing part, and just return the src_str (is_v6 to avoid testing only arg1). hmp_hostfwd_remove and hmp_ipv6_hostfwd_remove can then just start by calling it and get src_str that it can then use to parse the IPs. > + struct in6_addr host_addr = in6addr_any; > + if (*(p++) != '[') { > + goto fail_syntax; > + } As mentioned, better explicit this in the helper message. > +static int slirp_ipv6_hostfwd(SlirpState *s, const char *redir_str, > + Error **errp) For this one I wouldn't bother factorizing, though. Samuel