package main import ( "fmt" "net" ) func parseIpCidrList(in []string) ([]interface{}, error) { if len(in) == 0 { return nil, nil } var ret []interface{} for _, t := range in { _, ipnet, err := net.ParseCIDR(t) if err == nil { ret = append(ret, ipnet) continue } ip := net.ParseIP(t) if ip != nil { ret = append(ret, ip) continue } return nil, fmt.Errorf("unable to parse ip/network '%s'", t) } return ret, nil } type trackFlowType int const ( _TRACK_FLOW_RTP trackFlowType = iota _TRACK_FLOW_RTCP ) func interleavedChannelToTrack(channel uint8) (int, trackFlowType) { if (channel % 2) == 0 { return int(channel / 2), _TRACK_FLOW_RTP } return int((channel - 1) / 2), _TRACK_FLOW_RTCP } func trackToInterleavedChannel(id int, trackFlowType trackFlowType) uint8 { if trackFlowType == _TRACK_FLOW_RTP { return uint8(id * 2) } return uint8((id * 2) + 1) }