X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=command.c;h=97924f227988a99a851a1df2c703946d05fbe3bf;hp=9873fdd34867d01efab9cfa84a8b755c48f8a3fa;hb=06e7fb50098513c14d08c82fa1579d7bd105dc5c;hpb=c252837b853b35f06fffe637b2a6bf16419da954 diff --git a/command.c b/command.c index 9873fdd3..97924f22 100644 --- a/command.c +++ b/command.c @@ -6,9 +6,13 @@ /** \file command.c does client authentication and executes server commands */ -#include /* gettimeofday */ -#include "para.h" /* gettimeofday */ +#include +#include +#include +#include +#include +#include "para.h" #include "server.cmdline.h" #include "afs_common.h" #include "afh.h" @@ -16,7 +20,6 @@ #include "vss.h" #include "send.h" #include "rc4.h" -#include #include "error.h" #include "net.h" #include "daemon.h" @@ -25,9 +28,10 @@ #include "list.h" #include "user_list.h" #include "server_command_list.h" +#include "afs_command_list.h" /** commands including options must be shorter than this */ -#define MAX_COMMAND_LEN 4096 +#define MAX_COMMAND_LEN 32768 static RC4_KEY rc4_recv_key; static RC4_KEY rc4_send_key; @@ -178,7 +182,7 @@ static char *get_status(struct misc_meta_data *nmmd) return ret; } -static int check_sender_args(int argc, char **argv, struct sender_command_data *scd) +static int check_sender_args(int argc, char * const * argv, struct sender_command_data *scd) { int i; /* this has to match sender.h */ @@ -216,7 +220,7 @@ static int check_sender_args(int argc, char **argv, struct sender_command_data * case SENDER_ALLOW: if (argc != 4 && argc != 5) return -E_COMMAND_SYNTAX; - if (!inet_aton(argv[3], &scd->addr)) + if (!inet_pton(AF_INET, argv[3], &scd->addr)) return -E_COMMAND_SYNTAX; scd->netmask = 32; if (argc == 5) { @@ -229,7 +233,7 @@ static int check_sender_args(int argc, char **argv, struct sender_command_data * case SENDER_DELETE: if (argc != 4 && argc != 5) return -E_COMMAND_SYNTAX; - if (!inet_aton(argv[3], &scd->addr)) + if (!inet_pton(AF_INET, argv[3], &scd->addr)) return -E_COMMAND_SYNTAX; scd->port = -1; if (argc == 5) { @@ -244,7 +248,7 @@ static int check_sender_args(int argc, char **argv, struct sender_command_data * return 1; } -int com_sender(int fd, int argc, char **argv) +int com_sender(int fd, int argc, char * const * argv) { int i, ret; struct sender_command_data scd; @@ -286,7 +290,7 @@ int com_sender(int fd, int argc, char **argv) } /* server info */ -int com_si(int fd, int argc, __a_unused char **argv) +int com_si(int fd, int argc, __a_unused char * const * argv) { int i, ret; char *ut; @@ -335,7 +339,7 @@ int com_si(int fd, int argc, __a_unused char **argv) } /* version */ -int com_version(int fd, int argc, __a_unused char **argv) +int com_version(int fd, int argc, __a_unused char * const * argv) { if (argc != 1) return -E_COMMAND_SYNTAX; @@ -346,7 +350,7 @@ int com_version(int fd, int argc, __a_unused char **argv) } /* sc */ -int com_sc(int fd, int argc, char **argv) +int com_sc(int fd, int argc, char * const * argv) { char *name = NULL; int ret, old = 0, count = -1; /* print af change forever */ @@ -374,7 +378,7 @@ repeat: } /* sb */ -int com_sb(int fd, int argc, char **argv) +int com_sb(int fd, int argc, char * const * argv) { char *sb; int ret, nr = -1; /* status bar will be printed that many @@ -401,7 +405,7 @@ int com_sb(int fd, int argc, char **argv) } /* stat */ -int com_stat(int fd, int argc, char **argv) +int com_stat(int fd, int argc, char * const * argv) { int ret, num = 0;/* status will be printed that many * times. num <= 0 means: print forever @@ -451,7 +455,7 @@ static int send_list_of_commands(int fd, struct server_command *cmd, } /* always returns string that must be freed by the caller in handler */ -static struct server_command *get_cmd_ptr(char *name, char **handler) +static struct server_command *get_cmd_ptr(const char *name, char **handler) { struct server_command *cmd; @@ -471,11 +475,15 @@ static struct server_command *get_cmd_ptr(char *name, char **handler) for (; cmd->name; cmd++) if (!strcmp(cmd->name, name)) return cmd; + /* not found, look for commands supported by afs */ + for (cmd = afs_cmds; cmd->name; cmd++) + if (!strcmp(cmd->name, name)) + return cmd; return NULL; } /* help */ -int com_help(int fd, int argc, char **argv) +int com_help(int fd, int argc, char * const * argv) { struct server_command *cmd; char *perms, *handler; @@ -491,7 +499,10 @@ int com_help(int fd, int argc, char **argv) mmd_unlock(); ret = send_list_of_commands(fd, cmd, handler); free(handler); - return ret; + if (ret < 0) + return ret; + cmd = afs_cmds; + return send_list_of_commands(fd, cmd, "afs"); } /* argument given for help */ cmd = get_cmd_ptr(argv[1], &handler); @@ -519,7 +530,7 @@ int com_help(int fd, int argc, char **argv) } /* hup */ -int com_hup(__a_unused int fd, int argc, __a_unused char **argv) +int com_hup(__a_unused int fd, int argc, __a_unused char * const * argv) { if (argc != 1) return -E_COMMAND_SYNTAX; @@ -528,7 +539,7 @@ int com_hup(__a_unused int fd, int argc, __a_unused char **argv) } /* term */ -int com_term(__a_unused int fd, int argc, __a_unused char **argv) +int com_term(__a_unused int fd, int argc, __a_unused char * const * argv) { if (argc != 1) return -E_COMMAND_SYNTAX; @@ -536,7 +547,7 @@ int com_term(__a_unused int fd, int argc, __a_unused char **argv) return 1; } -int com_play(__a_unused int fd, int argc, __a_unused char **argv) +int com_play(__a_unused int fd, int argc, __a_unused char * const * argv) { if (argc != 1) return -E_COMMAND_SYNTAX; @@ -549,7 +560,7 @@ int com_play(__a_unused int fd, int argc, __a_unused char **argv) } /* stop */ -int com_stop(__a_unused int fd, int argc, __a_unused char **argv) +int com_stop(__a_unused int fd, int argc, __a_unused char * const * argv) { if (argc != 1) return -E_COMMAND_SYNTAX; @@ -562,7 +573,7 @@ int com_stop(__a_unused int fd, int argc, __a_unused char **argv) } /* pause */ -int com_pause(__a_unused int fd, int argc, __a_unused char **argv) +int com_pause(__a_unused int fd, int argc, __a_unused char * const * argv) { if (argc != 1) return -E_COMMAND_SYNTAX; @@ -575,7 +586,7 @@ int com_pause(__a_unused int fd, int argc, __a_unused char **argv) return 1; } -int com_chs(int fd, int argc, char **argv) +int com_chs(int fd, int argc, char * const * argv) { int i, ret; @@ -601,7 +612,7 @@ int com_chs(int fd, int argc, char **argv) } /* next */ -int com_next(__a_unused int fd, int argc, __a_unused char **argv) +int com_next(__a_unused int fd, int argc, __a_unused char * const * argv) { if (argc != 1) return -E_COMMAND_SYNTAX; @@ -613,7 +624,7 @@ int com_next(__a_unused int fd, int argc, __a_unused char **argv) } /* nomore */ -int com_nomore(__a_unused int fd, int argc, __a_unused char **argv) +int com_nomore(__a_unused int fd, int argc, __a_unused char * const * argv) { if (argc != 1) return -E_COMMAND_SYNTAX; @@ -625,7 +636,7 @@ int com_nomore(__a_unused int fd, int argc, __a_unused char **argv) } /* ff */ -int com_ff(__a_unused int fd, int argc, char **argv) +int com_ff(__a_unused int fd, int argc, char * const * argv) { long promille; int ret, backwards = 0; @@ -664,7 +675,7 @@ out: } /* jmp */ -int com_jmp(__a_unused int fd, int argc, char **argv) +int com_jmp(__a_unused int fd, int argc, char * const * argv) { long unsigned int i; int ret;