packets_xdr.go 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. // ************************************************************
  2. // This file is automatically generated by genxdr. Do not edit.
  3. // ************************************************************
  4. package discover
  5. import (
  6. "bytes"
  7. "io"
  8. "github.com/calmh/xdr"
  9. )
  10. /*
  11. Query Structure:
  12. 0 1 2 3
  13. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  14. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  15. | Magic |
  16. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  17. | Length of Node ID |
  18. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  19. / /
  20. \ Node ID (variable length) \
  21. / /
  22. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  23. struct Query {
  24. unsigned int Magic;
  25. opaque NodeID<32>;
  26. }
  27. */
  28. func (o Query) EncodeXDR(w io.Writer) (int, error) {
  29. var xw = xdr.NewWriter(w)
  30. return o.encodeXDR(xw)
  31. }
  32. func (o Query) MarshalXDR() []byte {
  33. return o.AppendXDR(make([]byte, 0, 128))
  34. }
  35. func (o Query) AppendXDR(bs []byte) []byte {
  36. var aw = xdr.AppendWriter(bs)
  37. var xw = xdr.NewWriter(&aw)
  38. o.encodeXDR(xw)
  39. return []byte(aw)
  40. }
  41. func (o Query) encodeXDR(xw *xdr.Writer) (int, error) {
  42. xw.WriteUint32(o.Magic)
  43. if len(o.NodeID) > 32 {
  44. return xw.Tot(), xdr.ErrElementSizeExceeded
  45. }
  46. xw.WriteBytes(o.NodeID)
  47. return xw.Tot(), xw.Error()
  48. }
  49. func (o *Query) DecodeXDR(r io.Reader) error {
  50. xr := xdr.NewReader(r)
  51. return o.decodeXDR(xr)
  52. }
  53. func (o *Query) UnmarshalXDR(bs []byte) error {
  54. var br = bytes.NewReader(bs)
  55. var xr = xdr.NewReader(br)
  56. return o.decodeXDR(xr)
  57. }
  58. func (o *Query) decodeXDR(xr *xdr.Reader) error {
  59. o.Magic = xr.ReadUint32()
  60. o.NodeID = xr.ReadBytesMax(32)
  61. return xr.Error()
  62. }
  63. /*
  64. Announce Structure:
  65. 0 1 2 3
  66. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  67. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  68. | Magic |
  69. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  70. | Node |
  71. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  72. | Number of Extra |
  73. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  74. / /
  75. \ Zero or more Node Structures \
  76. / /
  77. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  78. struct Announce {
  79. unsigned int Magic;
  80. Node This;
  81. Node Extra<16>;
  82. }
  83. */
  84. func (o Announce) EncodeXDR(w io.Writer) (int, error) {
  85. var xw = xdr.NewWriter(w)
  86. return o.encodeXDR(xw)
  87. }
  88. func (o Announce) MarshalXDR() []byte {
  89. return o.AppendXDR(make([]byte, 0, 128))
  90. }
  91. func (o Announce) AppendXDR(bs []byte) []byte {
  92. var aw = xdr.AppendWriter(bs)
  93. var xw = xdr.NewWriter(&aw)
  94. o.encodeXDR(xw)
  95. return []byte(aw)
  96. }
  97. func (o Announce) encodeXDR(xw *xdr.Writer) (int, error) {
  98. xw.WriteUint32(o.Magic)
  99. _, err := o.This.encodeXDR(xw)
  100. if err != nil {
  101. return xw.Tot(), err
  102. }
  103. if len(o.Extra) > 16 {
  104. return xw.Tot(), xdr.ErrElementSizeExceeded
  105. }
  106. xw.WriteUint32(uint32(len(o.Extra)))
  107. for i := range o.Extra {
  108. _, err := o.Extra[i].encodeXDR(xw)
  109. if err != nil {
  110. return xw.Tot(), err
  111. }
  112. }
  113. return xw.Tot(), xw.Error()
  114. }
  115. func (o *Announce) DecodeXDR(r io.Reader) error {
  116. xr := xdr.NewReader(r)
  117. return o.decodeXDR(xr)
  118. }
  119. func (o *Announce) UnmarshalXDR(bs []byte) error {
  120. var br = bytes.NewReader(bs)
  121. var xr = xdr.NewReader(br)
  122. return o.decodeXDR(xr)
  123. }
  124. func (o *Announce) decodeXDR(xr *xdr.Reader) error {
  125. o.Magic = xr.ReadUint32()
  126. (&o.This).decodeXDR(xr)
  127. _ExtraSize := int(xr.ReadUint32())
  128. if _ExtraSize > 16 {
  129. return xdr.ErrElementSizeExceeded
  130. }
  131. o.Extra = make([]Node, _ExtraSize)
  132. for i := range o.Extra {
  133. (&o.Extra[i]).decodeXDR(xr)
  134. }
  135. return xr.Error()
  136. }
  137. /*
  138. Node Structure:
  139. 0 1 2 3
  140. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  141. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  142. | Length of ID |
  143. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  144. / /
  145. \ ID (variable length) \
  146. / /
  147. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  148. | Number of Addresses |
  149. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  150. / /
  151. \ Zero or more Address Structures \
  152. / /
  153. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  154. struct Node {
  155. opaque ID<32>;
  156. Address Addresses<16>;
  157. }
  158. */
  159. func (o Node) EncodeXDR(w io.Writer) (int, error) {
  160. var xw = xdr.NewWriter(w)
  161. return o.encodeXDR(xw)
  162. }
  163. func (o Node) MarshalXDR() []byte {
  164. return o.AppendXDR(make([]byte, 0, 128))
  165. }
  166. func (o Node) AppendXDR(bs []byte) []byte {
  167. var aw = xdr.AppendWriter(bs)
  168. var xw = xdr.NewWriter(&aw)
  169. o.encodeXDR(xw)
  170. return []byte(aw)
  171. }
  172. func (o Node) encodeXDR(xw *xdr.Writer) (int, error) {
  173. if len(o.ID) > 32 {
  174. return xw.Tot(), xdr.ErrElementSizeExceeded
  175. }
  176. xw.WriteBytes(o.ID)
  177. if len(o.Addresses) > 16 {
  178. return xw.Tot(), xdr.ErrElementSizeExceeded
  179. }
  180. xw.WriteUint32(uint32(len(o.Addresses)))
  181. for i := range o.Addresses {
  182. _, err := o.Addresses[i].encodeXDR(xw)
  183. if err != nil {
  184. return xw.Tot(), err
  185. }
  186. }
  187. return xw.Tot(), xw.Error()
  188. }
  189. func (o *Node) DecodeXDR(r io.Reader) error {
  190. xr := xdr.NewReader(r)
  191. return o.decodeXDR(xr)
  192. }
  193. func (o *Node) UnmarshalXDR(bs []byte) error {
  194. var br = bytes.NewReader(bs)
  195. var xr = xdr.NewReader(br)
  196. return o.decodeXDR(xr)
  197. }
  198. func (o *Node) decodeXDR(xr *xdr.Reader) error {
  199. o.ID = xr.ReadBytesMax(32)
  200. _AddressesSize := int(xr.ReadUint32())
  201. if _AddressesSize > 16 {
  202. return xdr.ErrElementSizeExceeded
  203. }
  204. o.Addresses = make([]Address, _AddressesSize)
  205. for i := range o.Addresses {
  206. (&o.Addresses[i]).decodeXDR(xr)
  207. }
  208. return xr.Error()
  209. }
  210. /*
  211. Address Structure:
  212. 0 1 2 3
  213. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  214. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  215. | Length of IP |
  216. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  217. / /
  218. \ IP (variable length) \
  219. / /
  220. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  221. | 0x0000 | Port |
  222. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  223. struct Address {
  224. opaque IP<16>;
  225. unsigned int Port;
  226. }
  227. */
  228. func (o Address) EncodeXDR(w io.Writer) (int, error) {
  229. var xw = xdr.NewWriter(w)
  230. return o.encodeXDR(xw)
  231. }
  232. func (o Address) MarshalXDR() []byte {
  233. return o.AppendXDR(make([]byte, 0, 128))
  234. }
  235. func (o Address) AppendXDR(bs []byte) []byte {
  236. var aw = xdr.AppendWriter(bs)
  237. var xw = xdr.NewWriter(&aw)
  238. o.encodeXDR(xw)
  239. return []byte(aw)
  240. }
  241. func (o Address) encodeXDR(xw *xdr.Writer) (int, error) {
  242. if len(o.IP) > 16 {
  243. return xw.Tot(), xdr.ErrElementSizeExceeded
  244. }
  245. xw.WriteBytes(o.IP)
  246. xw.WriteUint16(o.Port)
  247. return xw.Tot(), xw.Error()
  248. }
  249. func (o *Address) DecodeXDR(r io.Reader) error {
  250. xr := xdr.NewReader(r)
  251. return o.decodeXDR(xr)
  252. }
  253. func (o *Address) UnmarshalXDR(bs []byte) error {
  254. var br = bytes.NewReader(bs)
  255. var xr = xdr.NewReader(br)
  256. return o.decodeXDR(xr)
  257. }
  258. func (o *Address) decodeXDR(xr *xdr.Reader) error {
  259. o.IP = xr.ReadBytesMax(16)
  260. o.Port = xr.ReadUint16()
  261. return xr.Error()
  262. }