OPM_PROTOCOL_CONFIG_T *protocol_config_create();
void protocol_config_free(OPM_PROTOCOL_CONFIG_T *);
+
OPM_SCAN_T *scan_create(OPM_T *, OPM_REMOTE_T *);
void scan_free(OPM_SCAN_T *);
+
OPM_CONNECTION_T *connection_create();
+void connection_free(OPM_CONNECTION_T *);
void check_establish(OPM_T *);
void check_poll(OPM_T *);
void opm_free(OPM_T *scanner)
{
node_t *p, *next;
- OPM_PROTOCOL_CONFIG_T *ppc;
+ OPM_PROTOCOL_CONFIG_T *ppc;
+ OPM_SCAN_T *scan;
config_free(scanner->config);
node_free(p);
}
+ LIST_FOREACH_SAFE(p, next, scanner->scans->head)
+ {
+ scan = (OPM_SCAN_T *) p->data;
+ scan_free(scan);
+ list_remove(scanner->scans, p);
+ }
+
list_free(scanner->protocols);
list_free(scanner->scans);
void scan_free(OPM_SCAN_T *scan)
{
+ node_t *p, *next;
+ OPM_CONNECTION_T *conn;
+
+ LIST_FOREACH_SAFE(p, next, scan->connections->head)
+ {
+ conn = (OPM_CONNECTION_T *) p->data;
+ connection_free(conn);
+
+ list_remove(scan->connections, p);
+ }
list_free(scan->connections);
+
MyFree(scan);
}
#include "opm_types.h"
#include <unistd.h>
-#define NODES 111
-
void open_proxy(OPM_REMOTE_T *, int);
void negotiation_failed(OPM_REMOTE_T *, int);
void timeout(OPM_REMOTE_T *, int);
void end(OPM_REMOTE_T *, int);
void handle_error(OPM_REMOTE_T *, int);
+int complete = 0;
+
int main(int argc, char **argv)
{
int fdlimit = 1024;
int scan_port = 6667;
int max_read = 4096;
- int scantimeout = 30;
+ int scantimeout = 10;
OPM_T *scanner;
OPM_REMOTE_T *remote;
else
remote = opm_remote_create("208.245.162.250");
+ if(remote == NULL)
+ {
+ printf("Bad address\n");
+ exit(1);
+ }
+
/* Setup callbacks */
remote->fun_openproxy = &open_proxy;
remote->fun_negfail = &negotiation_failed;
opm_scan(scanner, remote);
- while(1)
+ while(!complete)
opm_cycle(scanner);
- opm_remote_free(remote);
opm_free(scanner);
return 0;
{
printf("Scan on %s has ended\n", remote->ip);
opm_remote_free(remote);
+ complete = 1;
}
void handle_error(OPM_REMOTE_T *remote, int err)