1package sctp 2 3import ( 4 "github.com/pkg/errors" 5) 6 7type param interface { 8 marshal() ([]byte, error) 9 length() int 10} 11 12func buildParam(t paramType, rawParam []byte) (param, error) { 13 switch t { 14 case forwardTSNSupp: 15 return (¶mForwardTSNSupported{}).unmarshal(rawParam) 16 case supportedExt: 17 return (¶mSupportedExtensions{}).unmarshal(rawParam) 18 case random: 19 return (¶mRandom{}).unmarshal(rawParam) 20 case reqHMACAlgo: 21 return (¶mRequestedHMACAlgorithm{}).unmarshal(rawParam) 22 case chunkList: 23 return (¶mChunkList{}).unmarshal(rawParam) 24 case stateCookie: 25 return (¶mStateCookie{}).unmarshal(rawParam) 26 case heartbeatInfo: 27 return (¶mHeartbeatInfo{}).unmarshal(rawParam) 28 case outSSNResetReq: 29 return (¶mOutgoingResetRequest{}).unmarshal(rawParam) 30 case reconfigResp: 31 return (¶mReconfigResponse{}).unmarshal(rawParam) 32 } 33 return nil, errors.Errorf("Unhandled ParamType %v", t) 34} 35