code: func (b *HelloBody) Serialize(version uint8) ([]byte, error) {
  	if version <= 3 {
  		return []byte{uint8(b.RedistDefault)}, nil
  	} else { // version >= 4
  		var buf []byte
  		if version == 4 {
  			buf = make([]byte, 3)
  		} else if version >= 5 {
  			buf = make([]byte, 4)
  		}
  		buf[0] = uint8(b.RedistDefault)
  		binary.BigEndian.PutUint16(buf[1:3], b.Instance)
  		if version >= 5 {
  			buf[3] = b.ReceiveNotify
  		}
  		return buf, nil
  	}
  }
docs: // Reference: zebra_hello_send function in lib/zclient.c of Quagga1.2.x (ZAPI3)
  // Reference: zebra_hello_send function in lib/zclient.c of FRR3.x (ZAPI4)
  // Reference: zebra_hello_send function in lib/zclient.c of FRR5.x (ZAPI5)