Files
ippserver/messages.go

71 lines
1.7 KiB
Go

package main
// References
// https://tools.ietf.org/html/rfc8010
// https://tools.ietf.org/html/rfc8011
// Defined atribute group tags
const (
beginAttributeGroupTag = 0x00
operationAttributesTag = 0x01
jobAttributesTag = 0x02
endOfAttributesTag = 0x03
printerAttributesTag = 0x04
unsupportedAttributesTag = 0x05
)
// Defined value tags
// from rfc8010
const (
// Out of band
unsupportedValueTag = 0x10
unknownValueTag = 0x12
noValueValueTag = 0x13
// Integer values
integerValueTag = 0x21
booleanIntegerTag = 0x22
enumValueTag = 0x23
// Character string values
textWithoutLanguagageValueTag = 0x41
nameWithoutLanguagageValueTag = 0x42
keywordValueTag = 0x44
uriValueTag = 0x45
uriSchemeValueTag = 0x46
charsetValueTag = 0x47
naturalLanguagageValueTag = 0x48
mimeMediaTypeValueTag = 0x49
memberAttrNameValueTag = 0x4a
)
// Operation-id, defined in rfc8011
const (
PrintJob = 0x0002
PrintURI = 0x0003
ValidateJob = 0x0004
CreateJob = 0x0005
SendDocument = 0x0006
SendURI = 0x0007
CancelJob = 0x0008
GetJobAttributes = 0x0009
GetJobs = 0x000a
GetPrinterAttributes = 0x000b
HoldJob = 0x000c
ReleaseJob = 0x000d
RestartJob = 0x000e
PausePrinter = 0x0010
ResumePrinter = 0x0011
PurgeJobs = 0x0012
)
type ippRequestHeader struct {
versionNumber uint16
operationId uint16
requestId uint32
}
type ippRequest struct {
header ippRequestHeader
operationAttributes map[string]string
requestedAttributes []string
}