ref: 9383debbbe85a800aa0c0e5bd49e764f10228b47
parent: ec3e4f9bd68e3ca4d4953657c51b7052a9ebd5f3
author: cinap_lenrek <[email protected]>
date: Tue Jun 19 17:42:55 EDT 2018
devip: allow * hostname for listen
--- a/kern/devip.c
+++ b/kern/devip.c
@@ -817,21 +817,27 @@
port = lookupport(f[2]);
if(port <= 0)
error("no translation for port found");
- if(parseip(ip, f[1]) != -1){
- ips[0] = smprint("%I", ip);
- nips = 1;
+ if(strcmp(f[1], "*") == 0){
+ if(strcmp(f[0], "net") == 0)
+ f[0] = "tcp";
+ ns = smprint("/net/%s/clone %d", f[0], port);
} else {
- nips = so_gethostbyname(f[1], ips, nelem(ips));
- if(nips <= 0)
- error("no translation for host found");
- }
- ns = smprint("/net/%s/clone %s!%d", f[0], ips[0], port);
- free(ips[0]);
- for(i=1; i<nips; i++){
- ips[0] = smprint("%s\n/net/%s/clone %s!%d", ns, f[0], ips[i], port);
- free(ips[i]);
- free(ns);
- ns = ips[0];
+ if(parseip(ip, f[1]) != -1){
+ ips[0] = smprint("%I", ip);
+ nips = 1;
+ } else {
+ nips = so_gethostbyname(f[1], ips, nelem(ips));
+ if(nips <= 0)
+ error("no translation for host found");
+ }
+ ns = smprint("/net/%s/clone %s!%d", f[0], ips[0], port);
+ free(ips[0]);
+ for(i=1; i<nips; i++){
+ ips[0] = smprint("%s\n/net/%s/clone %s!%d", ns, f[0], ips[i], port);
+ free(ips[i]);
+ free(ns);
+ ns = ips[0];
+ }
}
free(c->aux);
c->aux = ns;