diff options
Diffstat (limited to 'camel/camel-service.h')
-rw-r--r-- | camel/camel-service.h | 66 |
1 files changed, 64 insertions, 2 deletions
diff --git a/camel/camel-service.h b/camel/camel-service.h index 8180b2a05e..f49472cc5a 100644 --- a/camel/camel-service.h +++ b/camel/camel-service.h @@ -1,9 +1,10 @@ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* camel-service.h : Abstract class for an email service */ + /* * - * Authors: Bertrand Guiheneuf <bertrand@helixcode.com> - * Michael Zucchi <notzed@ximian.com> + * Author : + * Bertrand Guiheneuf <bertrand@helixcode.com> * * Copyright 1999, 2000 Ximian, Inc. (www.ximian.com) * @@ -22,6 +23,7 @@ * USA */ + #ifndef CAMEL_SERVICE_H #define CAMEL_SERVICE_H 1 @@ -31,6 +33,7 @@ extern "C" { #pragma } #endif /* __cplusplus }*/ +#include <netdb.h> #include <camel/camel-object.h> #include <camel/camel-url.h> #include <camel/camel-provider.h> @@ -74,6 +77,7 @@ struct _CamelService { CamelURL *url; }; + typedef struct { CamelObjectClass parent_class; @@ -99,6 +103,7 @@ typedef struct { } CamelServiceClass; + /* query_auth_types returns a GList of these */ typedef struct { char *name; /* user-friendly name */ @@ -108,6 +113,7 @@ typedef struct { gboolean need_password; /* needs a password to authenticate */ } CamelServiceAuthType; + /* public methods */ void camel_service_construct (CamelService *service, CamelSession *session, @@ -129,6 +135,62 @@ CamelProvider * camel_service_get_provider (CamelService *service); GList * camel_service_query_auth_types (CamelService *service, CamelException *ex); +#ifdef NEED_ADDRINFO +/* Some of this is copied from GNU's netdb.h + + Copyright (C) 1996-2002, 2003, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. +*/ +struct addrinfo { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + struct sockaddr *ai_addr; + char *ai_canonname; + struct addrinfo *ai_next; +}; + +#define AI_CANONNAME 0x0002 /* Request for canonical name. */ +#define AI_NUMERICHOST 0x0004 /* Don't use name resolution. */ + +/* Error values for `getaddrinfo' function. */ +#define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */ +#define EAI_NONAME -2 /* NAME or SERVICE is unknown. */ +#define EAI_AGAIN -3 /* Temporary failure in name resolution. */ +#define EAI_FAIL -4 /* Non-recoverable failure in name res. */ +#define EAI_NODATA -5 /* No address associated with NAME. */ +#define EAI_FAMILY -6 /* `ai_family' not supported. */ +#define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */ +#define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */ +#define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */ +#define EAI_MEMORY -10 /* Memory allocation failure. */ +#define EAI_SYSTEM -11 /* System error returned in `errno'. */ +#define EAI_OVERFLOW -12 /* Argument buffer overflow. */ + +#define NI_MAXHOST 1025 +#define NI_MAXSERV 32 + +#define NI_NUMERICHOST 1 /* Don't try to look up hostname. */ +#define NI_NUMERICSERV 2 /* Don't convert port number to name. */ +#define NI_NOFQDN 4 /* Only return nodename portion. */ +#define NI_NAMEREQD 8 /* Don't return numeric addresses. */ +#define NI_DGRAM 16 /* Look up UDP service rather than TCP. */ +#endif + +/* new hostname interfaces */ +struct addrinfo *camel_getaddrinfo(const char *name, const char *service, + const struct addrinfo *hints, CamelException *ex); +void camel_freeaddrinfo(struct addrinfo *host); +int camel_getnameinfo(const struct sockaddr *sa, socklen_t salen, char **host, char **serv, + int flags, CamelException *ex); + /* Standard Camel function */ CamelType camel_service_get_type (void); |