diff options
Diffstat (limited to 'goldap/protocol_op.go')
-rw-r--r-- | goldap/protocol_op.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/goldap/protocol_op.go b/goldap/protocol_op.go new file mode 100644 index 0000000..0ea3881 --- /dev/null +++ b/goldap/protocol_op.go @@ -0,0 +1,63 @@ +package message + +import "fmt" + +func readProtocolOp(bytes *Bytes) (ret ProtocolOp, err error) { + tagAndLength, err := bytes.PreviewTagAndLength() + if err != nil { + err = LdapError{fmt.Sprintf("readProtocolOp:\n%s", err.Error())} + return + } + switch tagAndLength.Tag { + case TagBindRequest: + ret, err = readBindRequest(bytes) + case TagBindResponse: + ret, err = readBindResponse(bytes) + case TagUnbindRequest: + ret, err = readUnbindRequest(bytes) + case TagSearchRequest: + ret, err = readSearchRequest(bytes) + case TagSearchResultEntry: + ret, err = readSearchResultEntry(bytes) + case TagSearchResultDone: + ret, err = readSearchResultDone(bytes) + case TagSearchResultReference: + ret, err = readSearchResultReference(bytes) + case TagModifyRequest: + ret, err = readModifyRequest(bytes) + case TagModifyResponse: + ret, err = readModifyResponse(bytes) + case TagAddRequest: + ret, err = readAddRequest(bytes) + case TagAddResponse: + ret, err = readAddResponse(bytes) + case TagDelRequest: + ret, err = readDelRequest(bytes) + case TagDelResponse: + ret, err = readDelResponse(bytes) + case TagModifyDNRequest: + ret, err = readModifyDNRequest(bytes) + case TagModifyDNResponse: + ret, err = readModifyDNResponse(bytes) + case TagCompareRequest: + ret, err = readCompareRequest(bytes) + case TagCompareResponse: + ret, err = readCompareResponse(bytes) + case TagAbandonRequest: + ret, err = readAbandonRequest(bytes) + case TagExtendedRequest: + ret, err = readExtendedRequest(bytes) + case TagExtendedResponse: + ret, err = readExtendedResponse(bytes) + case TagIntermediateResponse: + ret, err = readIntermediateResponse(bytes) + default: + err = LdapError{fmt.Sprintf("readProtocolOp: invalid tag value %d for protocolOp", tagAndLength.Tag)} + return + } + if err != nil { + err = LdapError{fmt.Sprintf("readProtocolOp:\n%s", err.Error())} + return + } + return +} |