func (n *NTPCheck) ReadStatus() (*control.NTPControlMsg, error) {
	packet := n.getReadStatusPacket()
	return n.Client.Communicate(packet)
}
ReadStatus sends Read Status packet and returns response packet
package checker
import (
	"io"
	"github.com/facebookincubator/ntp/protocol/control"
	"github.com/pkg/errors"
	log "github.com/sirupsen/logrus"
)
var vnMode = control.MakeVnMode(3, control.Mode)
type ntpClient interface {
	Communicate(packet *control.NTPControlMsgHead) (*control.NTPControlMsg, error)
	CommunicateWithData(packet *control.NTPControlMsgHead, data []uint8) (*control.NTPControlMsg, error)
}
type NTPCheck struct {
	Client ntpClient
}
func (n *NTPCheck) getReadStatusPacket() *control.NTPControlMsgHead {
	return &control.NTPControlMsgHead{
		VnMode: vnMode,
		REMOp: control.OpReadStatus,
	}
}
func (n *NTPCheck) getReadVariablesPacket(associationID uint16) *control.NTPControlMsgHead {
	log.Debugf("preparing assoc info packet associationID=%x", associationID)
	return &control.NTPControlMsgHead{
		VnMode: vnMode,
		REMOp:         control.OpReadVariables,
		AssociationID: associationID,
	}
}