package sctp import ( "github.com/pkg/errors" ) type param interface { marshal() ([]byte, error) length() int } func buildParam(t paramType, rawParam []byte) (param, error) { switch t { case forwardTSNSupp: return (¶mForwardTSNSupported{}).unmarshal(rawParam) case supportedExt: return (¶mSupportedExtensions{}).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, errors.Errorf("Unhandled ParamType %v", t) } }