OpenDNSSEC-enforcer  2.0.2
cmdhandler.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2009 NLNet Labs. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
17  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
19  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
21  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
22  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
23  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  *
25  */
26 
32 #ifndef DAEMON_CMDHANDLER_H
33 #define DAEMON_CMDHANDLER_H
34 
35 #include <sys/un.h>
36 #include "scheduler/schedule.h"
37 #include "db/db_connection.h"
38 
39 /* Max number of not accepted connections before starting to drop. */
40 #define ODS_SE_MAX_HANDLERS 5
41 
42 struct engine_struct;
43 struct client_conn;
44 
48  struct sockaddr_un listen_addr;
49  pthread_t thread_id;
50  int listen_fd;
51  int client_fd;
53  int stopped;
55 };
56 
58  /* Name of command */
59  const char* cmdname;
60  /* print usage information */
61  void (*usage)(int sockfd);
62  /* print help, more elaborate than usage. Allowed to be
63  * NULL to indicate no help is available */
64  void (*help)(int sockfd);
65  /* 1 if module claims responibility for command
66  * 0 otherwise */
67  int (*handles)(const char *cmd, ssize_t n);
79  int (*run)(int sockfd, struct engine_struct* engine,
80  const char *cmd, ssize_t n, db_connection_t *dbconn);
81 };
82 
89 cmdhandler_type* cmdhandler_create(const char* filename);
90 
97 
104 void cmdhandler_stop(struct engine_struct* engine);
105 
112 void cmdhandler_get_usage(int sockfd);
113 
125 struct cmd_func_block* get_funcblock(const char *cmd, ssize_t n);
126 
127 #endif /* DAEMON_CMDHANDLER_H */
void cmdhandler_start(cmdhandler_type *cmdhandler)
Definition: cmdhandler.c:457
struct engine_struct * engine
Definition: cmdhandler.h:47
const char * cmdname
Definition: cmdhandler.h:59
struct sockaddr_un listen_addr
Definition: cmdhandler.h:48
db_connection_t * dbconn
Definition: cmdhandler.h:54
void cmdhandler_stop(struct engine_struct *engine)
Definition: cmdhandler.c:594
void cmdhandler_cleanup(cmdhandler_type *cmdhandler)
Definition: cmdhandler.c:446
cmdhandler_type * cmdhandler
Definition: engine.h:56
pthread_t thread_id
Definition: cmdhandler.h:49
struct cmd_func_block * get_funcblock(const char *cmd, ssize_t n)
Definition: cmdhandler.c:175
cmdhandler_type * cmdhandler_create(const char *filename)
Definition: cmdhandler.c:367
void cmdhandler_get_usage(int sockfd)
Definition: cmdhandler.c:163