1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package sctp
- import (
- "errors"
- "fmt"
- )
- type param interface {
- marshal() ([]byte, error)
- length() int
- }
- // ErrParamTypeUnhandled is returned if unknown parameter type is specified.
- var ErrParamTypeUnhandled = errors.New("unhandled ParamType")
- func buildParam(t paramType, rawParam []byte) (param, error) {
- switch t {
- case forwardTSNSupp:
- return (¶mForwardTSNSupported{}).unmarshal(rawParam)
- case supportedExt:
- return (¶mSupportedExtensions{}).unmarshal(rawParam)
- case ecnCapable:
- return (¶mECNCapable{}).unmarshal(rawParam)
- case random:
- return (¶mRandom{}).unmarshal(rawParam)
- case reqHMACAlgo:
- return (¶mRequestedHMACAlgorithm{}).unmarshal(rawParam)
- case chunkList:
- return (¶mChunkList{}).unmarshal(rawParam)
- case stateCookie:
- return (¶mStateCookie{}).unmarshal(rawParam)
- case heartbeatInfo:
- return (¶mHeartbeatInfo{}).unmarshal(rawParam)
- case outSSNResetReq:
- return (¶mOutgoingResetRequest{}).unmarshal(rawParam)
- case reconfigResp:
- return (¶mReconfigResponse{}).unmarshal(rawParam)
- default:
- return nil, fmt.Errorf("%w: %v", ErrParamTypeUnhandled, t)
- }
- }
|