code: func (i *Handle) parseConfig(msg []byte) (*Config, error) {
  	var c Config
  
  	//Remove General header for this message
  	hdr := deserializeGenlMsg(msg)
  	attrs, err := nl.ParseRouteAttr(msg[hdr.Len():])
  	if err != nil {
  		return nil, err
  	}
  
  	for _, attr := range attrs {
  		attrType := int(attr.Attr.Type)
  		switch attrType {
  		case ipvsCmdAttrTimeoutTCP:
  			c.TimeoutTCP = time.Duration(native.Uint32(attr.Value)) * time.Second
  		case ipvsCmdAttrTimeoutTCPFin:
  			c.TimeoutTCPFin = time.Duration(native.Uint32(attr.Value)) * time.Second
  		case ipvsCmdAttrTimeoutUDP:
  			c.TimeoutUDP = time.Duration(native.Uint32(attr.Value)) * time.Second
  		}
  	}
  
  	return &c, nil
  }
docs: // parseConfig given a ipvs netlink response this function will respond with a valid config entry, an error otherwise