int smtrdns_init (void) { AGENT *agent; /* Handle for our agent */ THREAD *thread; /* Handle to various threads */ # include "smtrdns.i" /* Include dialog interpreter */ /* Shutdown event comes from Kernel */ declare_smtlib_shutdown (shutdown_event, SMT_PRIORITY_MAX); /* Reply events from socket agent */ declare_smtsock_ok (ok_event, 0); declare_smtsock_connect_ok (ok_event, 0); declare_smtsock_closed (sock_closed_event, 0); declare_smtsock_error (sock_error_event, 0); declare_smtsock_timeout (sock_timeout_event, 0); /* Public methods supported by this agent */ declare_smtrdns_get_host_name (get_host_event, 0); declare_smtrdns_get_host_ip (get_ip_event, 0); /* Reply events from timer agent */ declare_smttime_reply (timer_event, SMT_PRIORITY_LOW); /* Private methods used to pass initial thread events */ method_declare (agent, "_MASTER", master_event, 0); method_declare (agent, "_CLIENT", client_event, 0); /* Ensure that operator console is running, else start it up */ smtoper_init (); if ((thread = thread_lookup (SMT_OPERATOR, "")) != NULL) operq = thread-> queue-> qid; else return (-1); /* Ensure that socket i/o agent is running, else start it up */ smtsock_init (); if ((thread = thread_lookup (SMT_SOCKET, "")) != NULL) sockq = thread-> queue-> qid; else return (-1); /* Ensure that timer agent is running, else start it up */ if (smttime_init ()) return (-1); /* Create initial thread to manage master port */ if ((thread = thread_create (AGENT_NAME, "")) != NULL) { SEND (&thread-> queue-> qid, "_MASTER", ""); ((TCB *) thread-> tcb)-> thread_type = master_event; } else return (-1); /* Signal okay to caller that we initialised okay */ return (0); }
int smtsimu_smtsock_init (void) { /* Initialise SMTSOCK agent */ if (smtsock_init ()) return (-1); /* Now initialise the SMTSIMU agent */ return (smtsimu_init ()); }
int smtsmtp_init (void) { AGENT *agent; /* Handle for our agent */ THREAD *thread; # include "smtsmtp.i" /* Include dialog interpreter */ /* Change any of the agent properties that you need to */ agent-> router = FALSE; /* FALSE = default */ agent-> max_threads = 0; /* 0 = default */ /* Method name Event value Priority */ /* Shutdown event comes from Kernel */ declare_smtlib_shutdown (shutdown_event, SMT_PRIORITY_MAX); /* Public methods supported by this agent */ declare_smtsmtp_send_message (send_mail_event, 0); declare_smtsmtp_open_message (open_mail_event, 0); declare_smtsmtp_message_chunk (mail_chunk_event, 0); declare_smtsmtp_close_message (close_mail_event, 0); /* Reply events from socket agent */ declare_smtsock_connect_ok (sock_connect_ok_event, SMT_PRIORITY_HIGH); declare_smtsock_read_ok (sock_read_ok_event, SMT_PRIORITY_HIGH); declare_smtsock_closed (sock_closed_event, SMT_PRIORITY_HIGH); declare_smtsock_read_closed (sock_read_closed_event, SMT_PRIORITY_HIGH); declare_smtsock_timeout (sock_timeout_event, SMT_PRIORITY_HIGH); declare_smtsock_error (sock_error_event, SMT_PRIORITY_HIGH); declare_smtsock_read_timeout (sock_timeout_event, SMT_PRIORITY_HIGH); declare_smtsock_ok (sock_ok_event, SMT_PRIORITY_HIGH); /* Ensure that socket i/o agent is running, else start it up */ if (agent_lookup (SMT_SOCKET) == NULL) smtsock_init (); if ((thread = thread_lookup (SMT_SOCKET, "")) != NULL) sockq = thread-> queue-> qid; else return (-1); /* Create master thread */ if ((thread = thread_create (AGENT_NAME, "master")) != NULL) { tcb = thread-> tcb; clear_context (tcb); tcb-> thread_type = master_event; } else return (-1); /* We need random number to generate message boundaries */ randomize (); /* Signal okay to caller that we initialised okay */ return (0); }
int xiddns_init (void) { AGENT *agent; /* Handle for our agent */ THREAD *thread; /* Handle to console thread */ # include "xiddns.i" /* Include dialog interpreter */ /* Method name Event value Priority */ /* Shutdown event comes from Kernel */ method_declare (agent, "SHUTDOWN", shutdown_event, SMT_PRIORITY_MAX); /* Public methods supported by this agent */ method_declare (agent, "SIGNON", signon_event, 0); method_declare (agent, "SIGNOFF", signoff_event, 0); /* Reply events from socket agent */ method_declare (agent, "SOCK_INPUT_OK", ok_event, 0); method_declare (agent, "SOCK_OUTPUT_OK", ok_event, 0); method_declare (agent, "SOCK_READ_OK", ok_event, 0); method_declare (agent, "SOCK_WRITE_OK", ok_event, 0); method_declare (agent, "SOCK_CLOSED", ok_event, 0); method_declare (agent, "SOCK_ERROR", sock_error_event, 0); method_declare (agent, "SOCK_TIMEOUT", sock_timeout_event, 0); /* Reply events from timer agent */ method_declare (agent, "TIME_ALARM", signon_event, 0); /* Ensure that operator console is running, else start it up */ smtoper_init (); if ((thread = thread_lookup (SMT_OPERATOR, "")) != NULL) operq = thread-> queue-> qid; else return (-1); /* Ensure that timer agent is running, else start it up */ smttime_init (); if ((thread = thread_lookup (SMT_TIMER, "")) != NULL) timeq = thread-> queue-> qid; else return (-1); /* Ensure that socket i/o agent is running, else start it up */ smtsock_init (); if ((thread = thread_lookup (SMT_SOCKET, "")) != NULL) sockq = thread-> queue-> qid; else return (-1); /* Create single master thread */ thread_create (AGENT_NAME, "main"); /* Signal okay to caller that we initialised okay */ return (0); }
int sysclia_init (char *p_command, char *p_port) { AGENT *agent; /* Handle for our agent */ THREAD *thread; /* Handle to console thread */ # include "sysclia.i" /* Include dialog interpreter */ /* Shutdown event comes from Kernel */ declare_smtlib_shutdown (shutdown_event, SMT_PRIORITY_MAX); /* Reply events from socket agent */ declare_smtsock_ok (ok_event, 0); declare_smtsock_read_ok (ok_event, 0); declare_smtsock_connect_ok (ok_event, 0); declare_smtsock_closed (sock_closed_event, 0); declare_smtsock_error (sock_error_event, 0); declare_smtsock_timeout (sock_error_event, 0); /* Reply events from transfer agent */ declare_smttran_get_block (ok_event, 0); declare_smttran_put_block (SMT_NULL_EVENT, 0); declare_smttran_putb_ok (SMT_NULL_EVENT, 0); declare_smttran_getb_ok (ok_event, 0); declare_smttran_closed (sock_closed_event, 0); declare_smttran_error (sock_error_event, 0); /* Create initial, unnamed thread */ thread_create (AGENT_NAME, ""); /* Ensure that socket agent is running, else start it up */ smtsock_init (); if ((thread = thread_lookup (SMT_SOCKET, "")) != NULL) sockq = thread-> queue-> qid; else return (-1); /* Ensure that transfer agent is running, else start it up */ smttran_init (); if ((thread = thread_lookup (SMT_TRANSFER, "")) != NULL) tranq = thread-> queue-> qid; else return (-1); /* Signal okay to caller that we initialised okay */ command = p_command; /* Get command from user */ port = p_port; /* Get port to connect to */ return (0); }
int smtupmc_init (char *p_args, char *p_portname) { AGENT *agent; /* Handle for our agent */ THREAD *thread; /* Handle to console thread */ # include "smtupmc.i" /* Include dialog interpreter */ /* Shutdown event comes from Kernel */ method_declare (agent, "SHUTDOWN", shutdown_event, SMT_PRIORITY_MAX); /* Reply events from socket agent */ method_declare (agent, "SOCK_INPUT_OK", ok_event, 0); method_declare (agent, "SOCK_OUTPUT_OK", ok_event, 0); method_declare (agent, "SOCK_READ_OK", ok_event, 0); method_declare (agent, "SOCK_WRITE_OK", ok_event, 0); method_declare (agent, "SOCK_CLOSED", sock_closed_event, 0); method_declare (agent, "SOCK_ERROR", sock_error_event, 0); method_declare (agent, "SOCK_TIMEOUT", sock_error_event, 0); /* Reply events from transfer agent */ method_declare (agent, "TRAN_GETF_OK", ok_event, 0); method_declare (agent, "TRAN_PUTF_OK", SMT_NULL_EVENT, 0); method_declare (agent, "TRAN_CLOSED", sock_closed_event, 0); method_declare (agent, "TRAN_ERROR", sock_error_event, 0); /* Create initial, unnamed thread */ thread_create (AGENT_NAME, ""); /* Ensure that socket agent is running, else start it up */ smtsock_init (); if ((thread = thread_lookup (SMT_SOCKET, "")) != NULL) sockq = thread-> queue-> qid; else return (-1); /* Ensure that transfer agent is running, else start it up */ smttran_init (); if ((thread = thread_lookup (SMT_TRANSFER, "")) != NULL) tranq = thread-> queue-> qid; else return (-1); /* Signal okay to caller that we initialised okay */ args = p_args; /* Get command-line arguments */ portname = p_portname; return (0); }
static int start_socket_agent (void) { THREAD *thread; if (! sockq) { if (agent_lookup (SMT_SOCKET) == NULL) smtsock_init (); if ( (thread = thread_lookup (SMT_SOCKET, "")) != NULL ) sockq = thread-> queue; else { strcpy (object_error, "Unable to start SOCK agent."); return -1; } } return 0; }
int smtftpd_init (void) { AGENT *agent; /* Handle for our agent */ THREAD *thread; /* Handle to various threads */ # include "smtftpd.i" /* Include dialog interpreter */ /* Method name Event value Priority */ /* Shutdown event comes from Kernel */ method_declare (agent, "SHUTDOWN", shutdown_event, SMT_PRIORITY_MAX); /* Reply events from socket agent */ method_declare (agent, "SOCK_INPUT_OK", ok_event, 0); method_declare (agent, "SOCK_OUTPUT_OK", ok_event, 0); method_declare (agent, "SOCK_READ_OK", ok_event, 0); method_declare (agent, "SOCK_WRITE_OK", ok_event, 0); method_declare (agent, "SOCK_CLOSED", sock_closed_event, 0); method_declare (agent, "SOCK_ERROR", sock_error_event, 0); method_declare (agent, "SOCK_TIMEOUT", sock_timeout_event, 0); /* Reply events from transfer agent */ method_declare (agent, "TRAN_PUTF_OK", finished_event, SMT_PRIORITY_HIGH); method_declare (agent, "TRAN_GETF_OK", finished_event, SMT_PRIORITY_HIGH); method_declare (agent, "TRAN_CLOSED", sock_closed_event, SMT_PRIORITY_HIGH); method_declare (agent, "TRAN_ERROR", sock_error_event, SMT_PRIORITY_HIGH); /* Public methods supported by this agent */ method_declare (agent, "FTPD_PASSIVE", passive_event, SMT_PRIORITY_LOW); method_declare (agent, "FTPD_PUT_FILE", put_file_event, SMT_PRIORITY_NORMAL); method_declare (agent, "FTPD_GET_FILE", get_file_event, SMT_PRIORITY_NORMAL); method_declare (agent, "FTPD_APPEND_FILE", append_file_event, SMT_PRIORITY_NORMAL); method_declare (agent, "FTPD_ABORT", abort_event, SMT_PRIORITY_HIGH); method_declare (agent, "FTPD_CLOSECTRL", close_control_event, SMT_PRIORITY_HIGH); /* Private method used to pass initial thread events */ method_declare (agent, "_MASTER", master_event, 0); /* Ensure that operator console is running, else start it up */ smtoper_init (); if ((thread = thread_lookup (SMT_OPERATOR, "")) != NULL) operq = thread-> queue-> qid; else return (-1); /* Ensure that socket i/o agent is running, else start it up */ smtsock_init (); if ((thread = thread_lookup (SMT_SOCKET, "")) != NULL) sockq = thread-> queue-> qid; else return (-1); /* Ensure that timer agent is running, else start it up */ smttime_init (); if ((thread = thread_lookup (SMT_TIMER, "")) != NULL) timeq = thread-> queue-> qid; else return (-1); /* Ensure that transfer agent is running, else start it up */ smttran_init (); if ((thread = thread_lookup (SMT_TRANSFER, "")) != NULL) tranq = thread-> queue-> qid; else return (-1); /* Create initial thread to manage master port */ if ((thread = thread_create (AGENT_NAME, "")) != NULL) { SEND (&thread-> queue-> qid, "_MASTER", ""); ((TCB *) thread-> tcb)-> thread_type = master_event; } else return (-1); pasv_port = sym_create_table (); /* Signal okay to caller that we initialised okay */ return (0); }
int smtrdns_init (void) { AGENT *agent; /* Handle for our agent */ THREAD *thread; /* Handle to various threads */ # include "smtrdns.i" /* Include dialog interpreter */ /* Method name Event value Priority */ /* Shutdown event comes from Kernel */ method_declare (agent, "SHUTDOWN", shutdown_event, SMT_PRIORITY_MAX); /* Reply events from socket agent */ method_declare (agent, "SOCK_INPUT_OK", input_ok_event, 0); method_declare (agent, "SOCK_OUTPUT_OK", ok_event, 0); method_declare (agent, "SOCK_READ_OK", ok_event, 0); method_declare (agent, "SOCK_WRITE_OK", ok_event, 0); method_declare (agent, "SOCK_CLOSED", sock_closed_event, 0); method_declare (agent, "SOCK_ERROR", sock_error_event, 0); method_declare (agent, "SOCK_TIMEOUT", sock_timeout_event, 0); /* Public methods supported by this agent */ method_declare (agent, "GET_HOST_NAME", get_host_event, 0); method_declare (agent, "GET_HOST_IP", get_ip_event, 0); /* Reply events from timer agent */ method_declare (agent, "TIME_ALARM", timer_event, SMT_PRIORITY_LOW); /* Private methods used to pass initial thread events */ method_declare (agent, "_MASTER", master_event, 0); method_declare (agent, "_CLIENT", client_event, 0); /* Ensure that operator console is running, else start it up */ smtoper_init (); if ((thread = thread_lookup (SMT_OPERATOR, "")) != NULL) operq = thread-> queue-> qid; else return (-1); /* Ensure that socket i/o agent is running, else start it up */ smtsock_init (); if ((thread = thread_lookup (SMT_SOCKET, "")) != NULL) sockq = thread-> queue-> qid; else return (-1); /* Ensure that timer agent is running, else start it up */ smttime_init (); if ((thread = thread_lookup (SMT_TIMER, "")) != NULL) timeq = thread-> queue-> qid; else return (-1); /* Create initial thread to manage master port */ if ((thread = thread_create (AGENT_NAME, "")) != NULL) { SEND (&thread-> queue-> qid, "_MASTER", ""); ((TCB *) thread-> tcb)-> thread_type = master_event; } else return (-1); /* Signal okay to caller that we initialised okay */ return (0); }