diff options
Diffstat (limited to 'usr/src/lib/libpkg/common/pkgweb.h')
-rw-r--r-- | usr/src/lib/libpkg/common/pkgweb.h | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/usr/src/lib/libpkg/common/pkgweb.h b/usr/src/lib/libpkg/common/pkgweb.h new file mode 100644 index 0000000000..fe9dc372d9 --- /dev/null +++ b/usr/src/lib/libpkg/common/pkgweb.h @@ -0,0 +1,130 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _PKGWEB_H +#define _PKGWEB_H + + +#ifdef __cplusplus +extern "C" { +#endif + +#include <netdb.h> +#include <boot_http.h> + +/* shortest backoff delay possible (in seconds) */ +#define MIN_BACKOFF 1 + +/* how much to increase backoff time after each failure */ +#define BACKOFF_FACTOR 2 + +/* Maximum amount of backoff for a heavy network or flaky server */ +#define MAX_BACKOFF 128 + +typedef enum { + HTTP_REQ_TYPE_HEAD, + HTTP_REQ_TYPE_GET +} HTTPRequestType; + +typedef enum { + OCSPSuccess, + OCSPMem, + OCSPParse, + OCSPConnect, + OCSPRequest, + OCSPResponder, + OCSPUnsupported, + OCSPVerify, + OCSPInternal, + OCSPNoURI +} OCSPStatus; + +typedef enum { + none, + web_http, + web_https, + web_ftp +} WebScheme; + +typedef enum { + WEB_OK, + WEB_TIMEOUT, + WEB_CONNREFUSED, + WEB_HOSTDOWN, + WEB_VERIFY_SETUP, + WEB_NOCONNECT, + WEB_GET_FAIL +} WebStatus; + +typedef struct { + ulong_t prev_cont_length; + ulong_t content_length; + ulong_t cur_pos; +} DwnldData; + +typedef struct { + keystore_handle_t keystore; + char *certfile; + char *uniqfile; + char *link; + char *errstr; + char *dwnld_dir; + boolean_t spool; + void *content; + int timeout; + url_hport_t proxy; + url_t url; + DwnldData data; + http_respinfo_t *resp; + boot_http_ver_t *http_vers; + http_handle_t *hps; +} WEB_SESSION; + +extern boolean_t web_session_control(PKG_ERR *, char *, char *, + keystore_handle_t, char *, ushort_t, int, int, int, char **); +extern boolean_t get_signature(PKG_ERR *, char *, struct pkgdev *, + PKCS7 **); +extern boolean_t validate_signature(PKG_ERR *, char *, BIO *, PKCS7 *, + STACK_OF(X509) *, url_hport_t *, int); +extern boolean_t ds_validate_signature(PKG_ERR *, struct pkgdev *, char **, + char *, PKCS7 *, STACK_OF(X509) *, url_hport_t *, int); +extern boolean_t get_proxy_port(PKG_ERR *, char **, ushort_t *); +extern boolean_t path_valid(char *); +extern void web_cleanup(void); +extern ushort_t strip_port(char *proxy); +extern void set_web_install(void); +extern int is_web_install(void); +extern void echo_out(int, char *, ...); +extern void backoff(void); +extern void reset_backoff(void); +extern char *get_endof_string(char *, char); +extern char *get_startof_string(char *, char); + +#ifdef __cplusplus +} +#endif + +#endif /* _PKGWEB_H */ |