code: func (m *Message) Unmarshal(v interface{}) error {
  	val := reflect.Indirect(reflect.ValueOf(v))
  	if val.Kind() != reflect.Struct || !val.CanSet() {
  		return fmt.Errorf("%v is not a pointer to a struct", reflect.TypeOf(v))
  	}
  	maxAttrID, err := structMaxAttrID(val)
  	if err != nil {
  		return err
  	}
  	attrs, err := parseMessage(m.nlm, maxAttrID)
  	if err != nil {
  		return err
  	}
  	return unmarshal(val, "", nil, attrs)
  }
docs: // Unmarshal parses the netlink message and fills the struct referenced by the
  // given pointer. The supported data types and netlink encodings are the same
  // as for Marshal.