PDU(Connect, "...",
	TYPE(8, 1)
	UINT(version, "WSP protocol version", 8)
	UINTVAR(capabilities_len, "Length of capabilities")
	UINTVAR(headers_len, "Length of session headers")
	OCTSTR(capabilities, "Requested capabilities", capabilities_len)
	OCTSTR(headers, "Session headers", headers_len)
	, 1)

PDU(ConnectReply, "...",
	TYPE(8, 2)
	UINTVAR(sessionid, "Session ID")
	UINTVAR(capabilities_len, "Length of capabilities")
	UINTVAR(headers_len, "Length of session headers")
	OCTSTR(capabilities, "Accepted capabilities", capabilities_len)
	OCTSTR(headers, "Session headers", headers_len)
	, 1)

PDU(Redirect, "Problem: need REPEAT structure to parse addresses",
	TYPE(8, 3)
	UINT(permanent, "Permanent Redirect flag", 1)
	UINT(reuse_security, "Reuse Security Session flag", 1)
	RESERVED(6)
	REST(addresses, "Redirect addresses")
	, 1)

PDU(Disconnect, "...",
	TYPE(8, 5)
	UINTVAR(sessionid, "Session ID")
	, 1)

PDU(Get, "...",
	TYPE(4, 0x4)
	UINT(subtype, "GET, OPTIONS, HEAD, DELETE, or TRACE", 4)
	UINTVAR(uri_len, "Length of URI")
	OCTSTR(uri, "URI", uri_len)
	REST(headers, "Request headers")
	, p->subtype <= 4)

PDU(Post, "...",
	TYPE(4, 0x6)
	UINT(subtype, "POST or PUT", 4)
	UINTVAR(uri_len, "Length of URI")
	UINTVAR(headers_len, "Length of headers")
	OCTSTR(uri, "URI", uri_len)
	OCTSTR(headers, "Content type and request headers", headers_len)
	REST(data, "Request data")
	, p->subtype <= 1)

PDU(Reply, "...",
	TYPE(8, 4)
	UINT(status, "Status code", 8)
	UINTVAR(headers_len, "Length of headers")
	OCTSTR(headers, "Content type and reply headers", headers_len)
	REST(data, "Reply data")
	, 1)

PDU(Push, "...",
	TYPE(8, 6)
	UINTVAR(headers_len, "Length of headers")
	OCTSTR(headers, "Content type and headers", headers_len)
	REST(data, "Push data")
	, 1)

PDU(ConfirmedPush, "...",
	TYPE(8, 7)
	UINTVAR(headers_len, "Length of headers")
	OCTSTR(headers, "Content type and headers", headers_len)
	REST(data, "Push data")
	, 1)

PDU(Suspend, "...",
	TYPE(8, 8)
	UINTVAR(sessionid, "Session ID")
	, 1)

PDU(Resume, "...",
	TYPE(8, 9)
	UINTVAR(sessionid, "Session ID")
	UINTVAR(capabilities_len, "Length of capabilities")
	OCTSTR(capabilities, "Reserved capabilities field", capabilities_len)
	REST(headers, "Session headers")
	, 1)

PDU(sia, "...",
    UINT(version, "sia version", 8)
    UINTVAR(appidlist_len, "Length of application id list")
    OCTSTR(application_id_list, "application id list", appidlist_len)
    UINTVAR(contactpoints_len, "Length of contact point list")
    OCTSTR(contactpoints, "list of contact points", contactpoints_len)
    , 1)


