u_int32_t LookupLocalAddr(void) { static u_int32_t local_addr; char name[MAXHOSTNAMELEN]; if (local_addr == 0) { (void)gethostname(name, sizeof(name)); local_addr = LookupHostAddr(name); } return (local_addr); }
int rtipChannel::command(int argc, const char*const* argv) { Tcl& tcl = Tcl::instance(); if (argc == 2) { if (strcmp(argv[1], "close") == 0) { close(); return (TCL_OK); } } else if (argc == 14) { /* * $net open dst port xmin xave I smax D J Z W U type */ if (strcmp(argv[1], "open") == 0) { u_int32_t addr = LookupHostAddr(argv[2]); if (addr == 0) { tcl.result("0"); return (TCL_OK); } int port = htons(atoi(argv[3])); rcapTraffic rt; rcapRequirements rr; rt.xmin = atoi(argv[4]); rt.xave = atoi(argv[5]); rt.I = atoi(argv[6]); rt.smax = atoi(argv[7]); rr.D = atoi(argv[8]); rr.J = atoi(argv[9]); rr.Z = atoi(argv[10]); rr.W = atoi(argv[11]); rr.U = atoi(argv[12]); rr.type = atoi(argv[13]); if (open(addr, port, &rt, &rr) < 0) tcl.result("0"); else tcl.result("1"); return (TCL_OK); } } return (Network::command(argc, argv)); }