| 44 | } |
| 45 | |
| 46 | func (r *socketRequest) Serialize() []byte { |
| 47 | b := writeBuffer{Bytes: make([]byte, sizeofSocketRequest)} |
| 48 | b.Write(r.Family) |
| 49 | b.Write(r.Protocol) |
| 50 | b.Write(r.Ext) |
| 51 | b.Write(r.pad) |
| 52 | native.PutUint32(b.Next(4), r.States) |
| 53 | networkOrder.PutUint16(b.Next(2), r.ID.SourcePort) |
| 54 | networkOrder.PutUint16(b.Next(2), r.ID.DestinationPort) |
| 55 | if r.Family == unix.AF_INET6 { |
| 56 | copy(b.Next(16), r.ID.Source) |
| 57 | copy(b.Next(16), r.ID.Destination) |
| 58 | } else { |
| 59 | copy(b.Next(16), r.ID.Source.To4()) |
| 60 | copy(b.Next(16), r.ID.Destination.To4()) |
| 61 | } |
| 62 | native.PutUint32(b.Next(4), r.ID.Interface) |
| 63 | native.PutUint32(b.Next(4), r.ID.Cookie[0]) |
| 64 | native.PutUint32(b.Next(4), r.ID.Cookie[1]) |
| 65 | return b.Bytes |
| 66 | } |
| 67 | |
| 68 | func (r *socketRequest) Len() int { return sizeofSocketRequest } |
| 69 | |