From c37a8a42b203bde0af14dc15b38a383ae6fbdb27 Mon Sep 17 00:00:00 2001 From: kpfleming Date: Tue, 19 Jul 2005 23:17:02 +0000 Subject: split acl and netsock code into separate files, in preparation for new netsock implementation various minor cleanups git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6165 f38db490-d61c-443f-a65b-d21fe96a405b --- include/asterisk/acl.h | 28 ++--------------------- include/asterisk/netsock.h | 57 ++++++++++++++++++++++++++++++++++++++++++++++ include/asterisk/utils.h | 12 ++++++++-- 3 files changed, 69 insertions(+), 28 deletions(-) create mode 100755 include/asterisk/netsock.h (limited to 'include') diff --git a/include/asterisk/acl.h b/include/asterisk/acl.h index 3baa45e5c..dc3e3a4c0 100755 --- a/include/asterisk/acl.h +++ b/include/asterisk/acl.h @@ -3,9 +3,9 @@ * * Access Control of various sorts * - * Copyright (C) 1999, Mark Spencer + * Copyright (C) 1999-2005, Digium, Inc. * - * Mark Spencer + * Mark Spencer * * This program is free software, distributed under the terms of * the GNU General Public License @@ -21,7 +21,6 @@ extern "C" { #include #include "asterisk/io.h" -#include "asterisk/astobj.h" #define AST_SENSE_DENY 0 #define AST_SENSE_ALLOW 1 @@ -29,12 +28,6 @@ extern "C" { /* Host based access control */ struct ast_ha; -struct ast_netsock; - -struct ast_netsock_list { - ASTOBJ_CONTAINER_COMPONENTS(struct ast_netsock); - struct io_context *ioc; -}; extern void ast_free_ha(struct ast_ha *ha); extern struct ast_ha *ast_append_ha(char *sense, char *stuff, struct ast_ha *path); @@ -44,25 +37,8 @@ extern int ast_get_ip_or_srv(struct sockaddr_in *sin, const char *value, const c extern int ast_ouraddrfor(struct in_addr *them, struct in_addr *us); extern int ast_lookup_iface(char *iface, struct in_addr *address); extern struct ast_ha *ast_duplicate_ha_list(struct ast_ha *original); -extern int ast_netsock_init(struct ast_netsock_list *list); -extern struct ast_netsock *ast_netsock_bind(struct ast_netsock_list *list, struct io_context *ioc, const char *bindinfo, int defaultport, int tos, ast_io_cb callback, void *data); -extern struct ast_netsock *ast_netsock_bindaddr(struct ast_netsock_list *list, struct io_context *ioc, struct sockaddr_in *bindaddr, int tos, ast_io_cb callback, void *data); -extern int ast_netsock_free(struct ast_netsock_list *list, struct ast_netsock *netsock); -extern int ast_netsock_release(struct ast_netsock_list *list); -extern struct ast_netsock *ast_netsock_find(struct ast_netsock_list *list, - struct sockaddr_in *sa); -extern int ast_netsock_sockfd(struct ast_netsock *ns); -extern const struct sockaddr_in *ast_netsock_boundaddr(struct ast_netsock *ns); -extern void *ast_netsock_data(struct ast_netsock *ns); extern int ast_find_ourip(struct in_addr *ourip, struct sockaddr_in bindaddr); -/*! Compares the source address and port of two sockaddr_in */ -static inline int inaddrcmp(struct sockaddr_in *sin1, struct sockaddr_in *sin2) -{ - return ((sin1->sin_addr.s_addr != sin2->sin_addr.s_addr ) - || (sin1->sin_port != sin2->sin_port)); -} - #if defined(__cplusplus) || defined(c_plusplus) } #endif diff --git a/include/asterisk/netsock.h b/include/asterisk/netsock.h new file mode 100755 index 000000000..2215e3d67 --- /dev/null +++ b/include/asterisk/netsock.h @@ -0,0 +1,57 @@ +/* + * Asterisk -- A telephony toolkit for Linux. + * + * Network socket handling + * + * Copyright (C) 2004-2005, Digium, Inc. + * + * Mark Spencer + * Kevin P. Fleming + * + * This program is free software, distributed under the terms of + * the GNU General Public License + */ + +#ifndef _ASTERISK_NETSOCK_H +#define _ASTERISK_NETSOCK_H + +#if defined(__cplusplus) || defined(c_plusplus) +extern "C" { +#endif + +#include +#include "asterisk/io.h" +#include "asterisk/astobj.h" + +struct ast_netsock; + +struct ast_netsock_list; + +struct ast_netsock_list *ast_netsock_list_alloc(void); + +int ast_netsock_init(struct ast_netsock_list *list); + +struct ast_netsock *ast_netsock_bind(struct ast_netsock_list *list, struct io_context *ioc, + const char *bindinfo, int defaultport, int tos, ast_io_cb callback, void *data); + +struct ast_netsock *ast_netsock_bindaddr(struct ast_netsock_list *list, struct io_context *ioc, + struct sockaddr_in *bindaddr, int tos, ast_io_cb callback, void *data); + +int ast_netsock_free(struct ast_netsock_list *list, struct ast_netsock *netsock); + +int ast_netsock_release(struct ast_netsock_list *list); + +struct ast_netsock *ast_netsock_find(struct ast_netsock_list *list, + struct sockaddr_in *sa); + +int ast_netsock_sockfd(const struct ast_netsock *ns); + +const struct sockaddr_in *ast_netsock_boundaddr(const struct ast_netsock *ns); + +void *ast_netsock_data(const struct ast_netsock *ns); + +#if defined(__cplusplus) || defined(c_plusplus) +} +#endif + +#endif diff --git a/include/asterisk/utils.h b/include/asterisk/utils.h index 246da5e76..1d398fa10 100755 --- a/include/asterisk/utils.h +++ b/include/asterisk/utils.h @@ -136,14 +136,22 @@ extern int ast_base64decode(unsigned char *dst, char *src, int max); extern int test_for_thread_safety(void); extern const char *ast_inet_ntoa(char *buf, int bufsiz, struct in_addr ia); -extern int ast_utils_init(void); -extern int ast_wait_for_input(int fd, int ms); #ifdef inet_ntoa #undef inet_ntoa #endif #define inet_ntoa __dont__use__inet_ntoa__use__ast_inet_ntoa__instead__ +extern int ast_utils_init(void); +extern int ast_wait_for_input(int fd, int ms); + +/*! Compares the source address and port of two sockaddr_in */ +static inline int inaddrcmp(const struct sockaddr_in *sin1, const struct sockaddr_in *sin2) +{ + return ((sin1->sin_addr.s_addr != sin2->sin_addr.s_addr) + || (sin1->sin_port != sin2->sin_port)); +} + #define AST_STACKSIZE 256 * 1024 #define ast_pthread_create(a,b,c,d) ast_pthread_create_stack(a,b,c,d,0) extern int ast_pthread_create_stack(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *data, size_t stacksize); -- cgit v1.2.3