Commit b35725c544eca03f09783f03a677c9faa5658e2e
Committed by
Anthony Liguori
1 parent
753a5f17
slirp: Refactor tcp_ctl
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing
1 changed file
with
30 additions
and
79 deletions
slirp/tcp_subr.c
... | ... | @@ -1228,84 +1228,35 @@ do_prompt: |
1228 | 1228 | * Return 0 if this connections is to be closed, 1 otherwise, |
1229 | 1229 | * return 2 if this is a command-line connection |
1230 | 1230 | */ |
1231 | -int | |
1232 | -tcp_ctl(struct socket *so) | |
1231 | +int tcp_ctl(struct socket *so) | |
1233 | 1232 | { |
1234 | - struct sbuf *sb = &so->so_snd; | |
1235 | - int command; | |
1236 | - struct ex_list *ex_ptr; | |
1237 | - int do_pty; | |
1238 | - // struct socket *tmpso; | |
1239 | - | |
1240 | - DEBUG_CALL("tcp_ctl"); | |
1241 | - DEBUG_ARG("so = %lx", (long )so); | |
1242 | - | |
1243 | -#if 0 | |
1244 | - /* | |
1245 | - * Check if they're authorised | |
1246 | - */ | |
1247 | - if (ctl_addr.s_addr && (ctl_addr.s_addr == -1 || (so->so_laddr.s_addr != ctl_addr.s_addr))) { | |
1248 | - sb->sb_cc = sprintf(sb->sb_wptr,"Error: Permission denied.\r\n"); | |
1249 | - sb->sb_wptr += sb->sb_cc; | |
1250 | - return 0; | |
1251 | - } | |
1252 | -#endif | |
1253 | - command = (ntohl(so->so_faddr.s_addr) & 0xff); | |
1254 | - | |
1255 | - switch(command) { | |
1256 | - default: /* Check for exec's */ | |
1257 | - | |
1258 | - /* | |
1259 | - * Check if it's pty_exec | |
1260 | - */ | |
1261 | - for (ex_ptr = exec_list; ex_ptr; ex_ptr = ex_ptr->ex_next) { | |
1262 | - if (ex_ptr->ex_fport == so->so_fport && | |
1263 | - command == ex_ptr->ex_addr) { | |
1264 | - if (ex_ptr->ex_pty == 3) { | |
1265 | - so->s = -1; | |
1266 | - so->extra = (void *)ex_ptr->ex_exec; | |
1267 | - return 1; | |
1268 | - } | |
1269 | - do_pty = ex_ptr->ex_pty; | |
1270 | - goto do_exec; | |
1271 | - } | |
1272 | - } | |
1273 | - | |
1274 | - /* | |
1275 | - * Nothing bound.. | |
1276 | - */ | |
1277 | - /* tcp_fconnect(so); */ | |
1278 | - | |
1279 | - /* FALLTHROUGH */ | |
1280 | - case CTL_ALIAS: | |
1281 | - sb->sb_cc = snprintf(sb->sb_wptr, sb->sb_datalen - (sb->sb_wptr - sb->sb_data), | |
1282 | - "Error: No application configured.\r\n"); | |
1283 | - sb->sb_wptr += sb->sb_cc; | |
1284 | - return(0); | |
1285 | - | |
1286 | - do_exec: | |
1287 | - DEBUG_MISC((dfd, " executing %s \n",ex_ptr->ex_exec)); | |
1288 | - return(fork_exec(so, ex_ptr->ex_exec, do_pty)); | |
1289 | - | |
1290 | -#if 0 | |
1291 | - case CTL_CMD: | |
1292 | - for (tmpso = tcb.so_next; tmpso != &tcb; tmpso = tmpso->so_next) { | |
1293 | - if (tmpso->so_emu == EMU_CTL && | |
1294 | - !(tmpso->so_tcpcb? | |
1295 | - (tmpso->so_tcpcb->t_state & (TCPS_TIME_WAIT|TCPS_LAST_ACK)) | |
1296 | - :0)) { | |
1297 | - /* Ooops, control connection already active */ | |
1298 | - sb->sb_cc = sprintf(sb->sb_wptr,"Sorry, already connected.\r\n"); | |
1299 | - sb->sb_wptr += sb->sb_cc; | |
1300 | - return 0; | |
1301 | - } | |
1302 | - } | |
1303 | - so->so_emu = EMU_CTL; | |
1304 | - ctl_password_ok = 0; | |
1305 | - sb->sb_cc = sprintf(sb->sb_wptr, "Slirp command-line ready (type \"help\" for help).\r\nSlirp> "); | |
1306 | - sb->sb_wptr += sb->sb_cc; | |
1307 | - do_echo=-1; | |
1308 | - return(2); | |
1309 | -#endif | |
1310 | - } | |
1233 | + int command = (ntohl(so->so_faddr.s_addr) & 0xff); | |
1234 | + struct sbuf *sb = &so->so_snd; | |
1235 | + struct ex_list *ex_ptr; | |
1236 | + int do_pty; | |
1237 | + | |
1238 | + DEBUG_CALL("tcp_ctl"); | |
1239 | + DEBUG_ARG("so = %lx", (long )so); | |
1240 | + | |
1241 | + if (command != CTL_ALIAS) { | |
1242 | + /* Check if it's pty_exec */ | |
1243 | + for (ex_ptr = exec_list; ex_ptr; ex_ptr = ex_ptr->ex_next) { | |
1244 | + if (ex_ptr->ex_fport == so->so_fport && | |
1245 | + command == ex_ptr->ex_addr) { | |
1246 | + if (ex_ptr->ex_pty == 3) { | |
1247 | + so->s = -1; | |
1248 | + so->extra = (void *)ex_ptr->ex_exec; | |
1249 | + return 1; | |
1250 | + } | |
1251 | + do_pty = ex_ptr->ex_pty; | |
1252 | + DEBUG_MISC((dfd, " executing %s \n",ex_ptr->ex_exec)); | |
1253 | + return fork_exec(so, ex_ptr->ex_exec, do_pty); | |
1254 | + } | |
1255 | + } | |
1256 | + } | |
1257 | + sb->sb_cc = | |
1258 | + snprintf(sb->sb_wptr, sb->sb_datalen - (sb->sb_wptr - sb->sb_data), | |
1259 | + "Error: No application configured.\r\n"); | |
1260 | + sb->sb_wptr += sb->sb_cc; | |
1261 | + return 0; | |
1311 | 1262 | } | ... | ... |