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 (&paramForwardTSNSupported{}).unmarshal(rawParam)
16	case supportedExt:
17		return (&paramSupportedExtensions{}).unmarshal(rawParam)
18	case random:
19		return (&paramRandom{}).unmarshal(rawParam)
20	case reqHMACAlgo:
21		return (&paramRequestedHMACAlgorithm{}).unmarshal(rawParam)
22	case chunkList:
23		return (&paramChunkList{}).unmarshal(rawParam)
24	case stateCookie:
25		return (&paramStateCookie{}).unmarshal(rawParam)
26	case heartbeatInfo:
27		return (&paramHeartbeatInfo{}).unmarshal(rawParam)
28	case outSSNResetReq:
29		return (&paramOutgoingResetRequest{}).unmarshal(rawParam)
30	case reconfigResp:
31		return (&paramReconfigResponse{}).unmarshal(rawParam)
32	}
33	return nil, errors.Errorf("Unhandled ParamType %v", t)
34}
35