1package proto 2 3import "github.com/pion/stun" 4 5// ReservationToken represents RESERVATION-TOKEN attribute. 6// 7// The RESERVATION-TOKEN attribute contains a token that uniquely 8// identifies a relayed transport address being held in reserve by the 9// server. The server includes this attribute in a success response to 10// tell the client about the token, and the client includes this 11// attribute in a subsequent Allocate request to request the server use 12// that relayed transport address for the allocation. 13// 14// RFC 5766 Section 14.9 15type ReservationToken []byte 16 17const reservationTokenSize = 8 // 8 bytes 18 19// AddTo adds RESERVATION-TOKEN to message. 20func (t ReservationToken) AddTo(m *stun.Message) error { 21 if err := stun.CheckSize(stun.AttrReservationToken, len(t), reservationTokenSize); err != nil { 22 return err 23 } 24 m.Add(stun.AttrReservationToken, t) 25 return nil 26} 27 28// GetFrom decodes RESERVATION-TOKEN from message. 29func (t *ReservationToken) GetFrom(m *stun.Message) error { 30 v, err := m.Get(stun.AttrReservationToken) 31 if err != nil { 32 return err 33 } 34 if err = stun.CheckSize(stun.AttrReservationToken, len(v), reservationTokenSize); err != nil { 35 return err 36 } 37 *t = v 38 return nil 39} 40