ipp.h revision 355b4669e025ff377602b6fc7caaf30dbc218371
/*
* 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
* 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 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*
*/
#ifndef _IPP_H
#define _IPP_H
/* $Id: ipp.h 146 2006-03-24 00:26:54Z njacobs $ */
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#include <stdarg.h>
#include <papi.h>
#include <inttypes.h>
enum {
IPP_TYPE_UNKNOWN = 0,
IPP_TYPE_REQUEST = 1,
};
/*
* How closely do we conform to the spec when parsing? Do we
* a) Stop parsing only when we encounter an error that prevents us from
* continuing parsing (a server error or ridiculously malformed request)?
* b) Stop parsing when we know the server wouldn't be able to act on the
* response correctly, even if we can make sense of some of the data?
* c) Jawohl, Mein IPP Spec!
* The answer will usually be b, though a will be useful for debugging.
*/
enum {
};
/* Operation IDs */
enum {
OPID_RESERVED_0001, /* 0x0001 */
OPID_PRINT_JOB, /* 0x0002 */
OPID_PRINT_URI, /* 0x0003 */
OPID_VALIDATE_JOB, /* 0x0004 */
OPID_CREATE_JOB, /* 0x0005 */
OPID_SEND_DOCUMENT, /* 0x0006 */
OPID_SEND_URI, /* 0x0007 */
OPID_CANCEL_JOB, /* 0x0008 */
OPID_GET_JOB_ATTRIBUTES, /* 0x0009 */
OPID_GET_JOBS, /* 0x000a */
OPID_GET_PRINTER_ATTRIBUTES, /* 0x000b */
OPID_HOLD_JOB, /* 0x000c */
OPID_RELEASE_JOB, /* 0x000d */
OPID_RESTART_JOB, /* 0x000e */
OPID_RESERVED_000F, /* 0x000f */
OPID_PAUSE_PRINTER, /* 0x0010 */
OPID_RESUME_PRINTER, /* 0x0011 */
OPID_PURGE_JOBS, /* 0x0012 */
OPID_SET_PRINTER_ATTRIBUTES, /* 0x0013 */
OPID_SET_JOB_ATTRIBUTES, /* 0x0014 */
OPID_GET_PRINTER_SUPPORTED_VALUES, /* 0x0015 */
OPID_CREATE_PRINTER_SUBSCRIPTION, /* 0x0016 */
OPID_CREATE_JOB_SUBSCRIPTION, /* 0x0017 */
OPID_GET_SUBSCRIPTION_ATTRIBUTES, /* 0x0018 */
OPID_GET_SUBSCRIPTIONS, /* 0x0019 */
OPID_RENEW_SUBSCRIPTION, /* 0x001a */
OPID_CANCEL_SUBSCRIPTION, /* 0x001b */
OPID_GET_NOTIFICATIONS, /* 0x001c */
OPID_SEND_NOTIFICATIONS, /* 0x001d */
OPID_GET_RESOURCE_ATTRIBUTES, /* 0x001e */
OPID_GET_RESOURCE_DATA, /* 0x001f */
OPID_GET_RESOURCES, /* 0x0020 */
OPID_GET_PRINT_SUPPORT_FILES, /* 0x0021 */
OPID_ENABLE_PRINTER, /* 0x0022 */
OPID_DISABLE_PRINTER, /* 0x0023 */
OPID_PAUSE_PRINTER_AFTER_CURRENT_JOB, /* 0x0024 */
OPID_HOLD_NEW_JOBS, /* 0x0025 */
OPID_RELEASE_HELD_NEW_JOBS, /* 0x0026 */
OPID_DEACTIVATE_PRINTER, /* 0x0027 */
OPID_ACTIVATE_PRINTER, /* 0x0028 */
OPID_RESTART_PRINTER, /* 0x0029 */
OPID_SHUTDOWN_PRINTER, /* 0x002a */
OPID_STARTUP_PRINTER, /* 0x002b */
OPID_REPROCESS_JOB, /* 0x002c */
OPID_CANCEL_CURRENT_JOB, /* 0x002d */
OPID_SUSPEND_CURRENT_JOB, /* 0x002e */
OPID_RESUME_JOB, /* 0x002f */
OPID_PROMOTE_JOB, /* 0x0030 */
OPID_SCHEDULE_JOB_AFTER, /* 0x0031 */
OPID_RESERVED_MIN, /* 0x0032 */
/* ... */
/* ... */
};
enum {
/* Delimiter Tags */
DTAG_OPERATION_ATTRIBUTES, /* 0x01 */
DTAG_JOB_ATTRIBUTES, /* 0x02 */
DTAG_END_OF_ATTRIBUTES, /* 0x03 */
DTAG_PRINTER_ATTRIBUTES, /* 0x04 */
DTAG_UNSUPPORTED_ATTRIBUTES, /* 0x05 */
DTAG_SUBSCRIPTION_ATTRIBUTES, /* 0x06 */
DTAG_EVENT_NOTIFICATION_ATTRIBUTES, /* 0x07 */
DTAG_RESERVED_DELIMITER_08, /* 0x08 */
DTAG_RESERVED_DELIMITER_09, /* 0x09 */
DTAG_RESERVED_DELIMITER_0A, /* 0x0a */
DTAG_RESERVED_DELIMITER_0B, /* 0x0b */
DTAG_RESERVED_DELIMITER_0C, /* 0x0c */
DTAG_RESERVED_DELIMITER_0D, /* 0x0d */
DTAG_RESERVED_DELIMITER_0E, /* 0x0e */
DTAG_RESERVED_DELIMITER_0F, /* 0x0f */
/* Value Tags */
VTAG_RESERVED_DEFAULT, /* 0x11 */
VTAG_UNKNOWN, /* 0x12 */
VTAG_NOVALUE, /* 0x13 */
VTAG_RESERVED_OOB_14, /* 0x14 */
VTAG_NOT_SETTABLE, /* 0x15 */
VTAG_DELETE_ATTRIBUTE, /* 0x16 */
VTAG_ADMIN_DEFINE, /* 0x17 */
VTAG_RESERVED_OOB_18, /* 0x18 */
VTAG_RESERVED_OOB_19, /* 0x19 */
VTAG_RESERVED_OOB_1A, /* 0x1a */
VTAG_RESERVED_OOB_1B, /* 0x1b */
VTAG_RESERVED_OOB_1C, /* 0x1c */
VTAG_RESERVED_OOB_1D, /* 0x1d */
VTAG_RESERVED_OOB_1E, /* 0x1e */
VTAG_RESERVED_OOB_1F, /* 0x1f */
VTAG_RESERVED_INT_GEN, /* 0x20 */
VTAG_INTEGER, /* 0x21 */
VTAG_BOOLEAN, /* 0x22 */
VTAG_ENUM, /* 0x23 */
VTAG_RESERVED_INT_24, /* 0x24 */
VTAG_RESERVED_INT_25, /* 0x25 */
VTAG_RESERVED_INT_26, /* 0x26 */
VTAG_RESERVED_INT_27, /* 0x27 */
VTAG_RESERVED_INT_28, /* 0x28 */
VTAG_RESERVED_INT_29, /* 0x29 */
VTAG_RESERVED_INT_2A, /* 0x2a */
VTAG_RESERVED_INT_2B, /* 0x2b */
VTAG_RESERVED_INT_2C, /* 0x2c */
VTAG_RESERVED_INT_2D, /* 0x2d */
VTAG_RESERVED_INT_2E, /* 0x2e */
VTAG_RESERVED_INT_2F, /* 0x2f */
VTAG_OCTET_STRING, /* 0x30 */
VTAG_DATE_TIME, /* 0x31 */
VTAG_RESOLUTION, /* 0x32 */
VTAG_RANGE_OF_INTEGER, /* 0x33 */
VTAG_BEGIN_COLLECTION, /* 0x34 */
VTAG_TEXT_WITH_LANGUAGE, /* 0x35 */
VTAG_NAME_WITH_LANGUAGE, /* 0x36 */
VTAG_END_COLLECTION, /* 0x37 */
VTAG_RESERVED_STRING_38, /* 0x38 */
VTAG_RESERVED_STRING_39, /* 0x39 */
VTAG_RESERVED_STRING_3A, /* 0x3a */
VTAG_RESERVED_STRING_3B, /* 0x3b */
VTAG_RESERVED_STRING_3C, /* 0x3c */
VTAG_RESERVED_STRING_3D, /* 0x3d */
VTAG_RESERVED_STRING_3E, /* 0x3e */
VTAG_RESERVED_STRING_3F, /* 0x3f */
VTAG_RESERVED_CHAR_GEN, /* 0x40 */
VTAG_TEXT_WITHOUT_LANGUAGE, /* 0x41 */
VTAG_NAME_WITHOUT_LANGUAGE, /* 0x42 */
VTAG_RESERVED_43, /* 0x43 */
VTAG_KEYWORD, /* 0x44 */
VTAG_URI, /* 0x45 */
VTAG_URI_SCHEME, /* 0x46 */
VTAG_CHARSET, /* 0x47 */
VTAG_NATURAL_LANGUAGE, /* 0x48 */
VTAG_MIME_MEDIA_TYPE, /* 0x49 */
VTAG_MEMBER_ATTR_NAME, /* 0x4a */
VTAG_RESERVED_STRING_4B, /* 0x4b */
VTAG_RESERVED_STRING_4C, /* 0x4c */
VTAG_RESERVED_STRING_4D, /* 0x4d */
VTAG_RESERVED_STRING_4E, /* 0x4e */
VTAG_RESERVED_STRING_4F, /* 0x4f */
VTAG_RESERVED_STRING_50, /* 0x50 */
VTAG_RESERVED_STRING_51, /* 0x51 */
VTAG_RESERVED_STRING_52, /* 0x52 */
VTAG_RESERVED_STRING_53, /* 0x53 */
VTAG_RESERVED_STRING_54, /* 0x54 */
VTAG_RESERVED_STRING_55, /* 0x55 */
VTAG_RESERVED_STRING_56, /* 0x56 */
VTAG_RESERVED_STRING_57, /* 0x57 */
VTAG_RESERVED_STRING_58, /* 0x58 */
VTAG_RESERVED_STRING_59, /* 0x59 */
VTAG_RESERVED_STRING_5A, /* 0x5a */
VTAG_RESERVED_STRING_5B, /* 0x5b */
VTAG_RESERVED_STRING_5C, /* 0x5c */
VTAG_RESERVED_STRING_5D, /* 0x5d */
VTAG_RESERVED_STRING_5E, /* 0x5e */
VTAG_RESERVED_STRING_5F, /* 0x5f */
};
/* Response codes */
enum {
IPP_OK_MIN = 0x0000,
IPP_OK_IGNORED_ATTRIBUTES, /* 0x0001 */
IPP_OK_CONFLICTING_ATTRIBUTES, /* 0x0002 */
IPP_OK_IGNORED_SUBSCRIPTIONS, /* 0x0003 */
IPP_OK_IGNORED_NOTIFICATIONS, /* 0x0004 */
IPP_OK_TOO_MANY_EVENTS, /* 0x0005 */
IPP_OK_BUT_CANCEL_SUBSCRIPTION, /* 0x0006 */
IPP_REDIR_MIN = 0x0300,
IPP_REDIR_MAX = 0x0300,
IPP_CERR_MIN = 0x0400,
IPP_CERR_FORBIDDEN, /* 0x0401 */
IPP_CERR_NOT_AUTHENTICATED, /* 0x0402 */
IPP_CERR_NOT_AUTHORIZED, /* 0x0403 */
IPP_CERR_NOT_POSSIBLE, /* 0x0404 */
IPP_CERR_TIMEOUT, /* 0x0405 */
IPP_CERR_NOT_FOUND, /* 0x0406 */
IPP_CERR_GONE, /* 0x0407 */
IPP_CERR_REQUEST_ENTITY, /* 0x0408 */
IPP_CERR_REQUEST_VALUE, /* 0x0409 */
IPP_CERR_DOCUMENT_FORMAT, /* 0x040a */
IPP_CERR_ATTRIBUTES, /* 0x040b */
IPP_CERR_URI_SCHEME, /* 0x040c */
IPP_CERR_CHARSET, /* 0x040d */
IPP_CERR_CONFLICT, /* 0x040e */
IPP_CERR_COMPRESSION_NOT_SUPPORTED, /* 0x040f */
IPP_CERR_COMPRESSION_ERROR, /* 0x0410 */
IPP_CERR_DOCUMENT_FORMAT_ERROR, /* 0x0411 */
IPP_CERR_DOCUMENT_ACCESS_ERROR, /* 0x0412 */
IPP_CERR_ATTRIBUTES_NOT_SETTABLE, /* 0x0413 */
IPP_CERR_IGNORED_ALL_SUBSCRIPTIONS, /* 0x0414 */
IPP_CERR_TOO_MANY_SUBSCRIPTIONS, /* 0x0415 */
IPP_CERR_IGNORED_ALL_NOTIFICATIONS, /* 0x0416 */
IPP_CERR_PRINT_SUPPORT_FILE_NOT_FOUND, /* 0x0417 */
IPP_SERR_MIN = 0x0500,
IPP_SERR_OPERATION_NOT_SUPPORTED, /* 0x0501 */
IPP_SERR_SERVICE_UNAVAILABLE, /* 0x0502 */
IPP_SERR_VERSION_NOT_SUPPORTED, /* 0x0503 */
IPP_SERR_DEVICE_ERROR, /* 0x0504 */
IPP_SERR_TEMPORARY_ERROR, /* 0x0505 */
IPP_SERR_NOT_ACCEPTING, /* 0x0506 */
IPP_SERR_BUSY, /* 0x0507 */
IPP_SERR_CANCELLED, /* 0x0508 */
IPP_SERR_MULTIPLE_DOCS_NOT_SUPPORTED, /* 0x0509 */
IPP_SERR_PRINTER_IS_DEACTIVATED, /* 0x050a */
};
/* Job state codes */
enum {
};
/* exported functions */
/* internal functions shared between modules */
char *format, ...);
papi_attribute_t ***response);
extern char *ipp_uri_to_printer(char *uri);
extern char *job_template[];
extern char *job_description[];
extern char *printer_description[];
extern int is_keyword(char *value);
#ifdef __cplusplus
}
#endif
#endif /* _IPP_H */