route_linux.go 724 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package nl
  2. import (
  3. "syscall"
  4. "unsafe"
  5. )
  6. type RtMsg struct {
  7. syscall.RtMsg
  8. }
  9. func NewRtMsg() *RtMsg {
  10. return &RtMsg{
  11. RtMsg: syscall.RtMsg{
  12. Table: syscall.RT_TABLE_MAIN,
  13. Scope: syscall.RT_SCOPE_UNIVERSE,
  14. Protocol: syscall.RTPROT_BOOT,
  15. Type: syscall.RTN_UNICAST,
  16. },
  17. }
  18. }
  19. func NewRtDelMsg() *RtMsg {
  20. return &RtMsg{
  21. RtMsg: syscall.RtMsg{
  22. Table: syscall.RT_TABLE_MAIN,
  23. Scope: syscall.RT_SCOPE_NOWHERE,
  24. },
  25. }
  26. }
  27. func (msg *RtMsg) Len() int {
  28. return syscall.SizeofRtMsg
  29. }
  30. func DeserializeRtMsg(b []byte) *RtMsg {
  31. return (*RtMsg)(unsafe.Pointer(&b[0:syscall.SizeofRtMsg][0]))
  32. }
  33. func (msg *RtMsg) Serialize() []byte {
  34. return (*(*[syscall.SizeofRtMsg]byte)(unsafe.Pointer(msg)))[:]
  35. }