X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=common-src%2Fsecurity-util.h;h=9b2dcc47ce855249dacd6d3d37ed79da385cbf2b;hb=d3b2175e084f88c8736ad7073eacbf4670147aec;hp=b1d8faa7a26480c7311695506e438659721dd652;hpb=34197d9f46a5f4e944378cbb65fca32ee0eec7b9;p=debian%2Famanda diff --git a/common-src/security-util.h b/common-src/security-util.h index b1d8faa..9b2dcc4 100644 --- a/common-src/security-util.h +++ b/common-src/security-util.h @@ -35,6 +35,26 @@ #include "stream.h" #include "dgram.h" #include "queue.h" +#include "conffile.h" +#include "security.h" +#include "event.h" + +#define auth_debug(i,x) do { \ + if ((i) <= debug_auth) { \ + dbprintf(x); \ + } \ +} while (0) + + +#ifdef KRB5_SECURITY +# define KRB5_DEPRECATED 1 +# ifndef KRB5_HEIMDAL_INCLUDES +# include +# else +# include +# endif +# include +#endif struct sec_handle; @@ -56,12 +76,16 @@ struct tcp_conn { int refcnt; /* number of handles using */ int handle; /* last proto handle read */ void (*accept_fn)(security_handle_t *, pkt_t *); - struct sockaddr_in peer; + struct sockaddr_storage peer; TAILQ_ENTRY(tcp_conn) tq; /* queue handle */ int (*recv_security_ok)(struct sec_handle *, pkt_t *); char * (*prefix_packet)(void *, pkt_t *); int toclose; int donotclose; + int auth; +#ifdef KRB5_SECURITY + gss_ctx_id_t gss_context; +#endif }; @@ -83,7 +107,7 @@ struct sec_handle { } fn; void * arg; /* argument to pass function */ event_handle_t * ev_timeout; /* timeout handle for recv */ - struct sockaddr_in peer; + struct sockaddr_storage peer; int sequence; event_id_t event_id; char * proto_handle; @@ -139,7 +163,7 @@ extern struct connq_s connq; typedef struct udp_handle { const struct security_driver *driver; /* MUST be first */ dgram_t dgram; /* datagram to read/write from */ - struct sockaddr_in peer; /* who sent it to us */ + struct sockaddr_storage peer; /* who sent it to us */ pkt_t pkt; /* parsed form of dgram */ char *handle; /* handle from recvd packet */ int sequence; /* seq no of packet */ @@ -200,8 +224,8 @@ int tcpm_stream_write(void *, const void *, size_t); void tcpm_stream_read(void *, void (*)(void *, void *, ssize_t), void *); ssize_t tcpm_stream_read_sync(void *, void **); void tcpm_stream_read_cancel(void *); -ssize_t tcpm_send_token(int, int, char **, const void *, size_t); -ssize_t tcpm_recv_token(int, int *, char **, char **, ssize_t *, int); +ssize_t tcpm_send_token(struct tcp_conn *, int, int, char **, const void *, size_t); +ssize_t tcpm_recv_token(struct tcp_conn *, int, int *, char **, char **, ssize_t *, int); void tcpm_close_connection(void *, char *); int tcpma_stream_accept(void *); @@ -225,8 +249,8 @@ void udp_recvpkt(void *, void (*)(void *, pkt_t *, security_status_t), void udp_recvpkt_cancel(void *); void udp_recvpkt_callback(void *); void udp_recvpkt_timeout(void *); -int udp_inithandle(udp_handle_t *, struct sec_handle *, struct hostent *, - in_port_t, char *, int); +int udp_inithandle(udp_handle_t *, struct sec_handle *, char *hostname, + struct sockaddr_storage *, in_port_t, char *, int); void udp_netfd_read_callback(void *); struct tcp_conn *sec_tcp_conn_get(const char *, int); @@ -241,7 +265,7 @@ char * check_user_ruserok (const char *host, struct passwd *pwd, const char *user); char * check_user_amandahosts(const char *host, - struct in_addr addr, + struct sockaddr_storage *addr, struct passwd *pwd, const char *user, const char *service); @@ -250,5 +274,11 @@ ssize_t net_writev(int, struct iovec *, int); ssize_t net_read(int, void *, size_t, int); ssize_t net_read_fillbuf(int, int, void *, size_t); void show_stat_info(char *a, char *b); +int check_name_give_sockaddr(const char *hostname, struct sockaddr *addr, + char **errstr); +int check_addrinfo_give_name(struct addrinfo *res, const char *hostname, + char **errstr); +int try_resolving_hostname(const char *hostname, + char **cannonname); #endif /* _SECURITY_INFO_H */