+// LogFields return a logrus compatible logging context
+func (c *Client) LogFields() logrus.Fields {
+ const prefix = "client_"
+ f := logrus.Fields{
+ prefix + "remote": c.config.RemoteAddress,
+ }
+ if c.tap != nil {
+ f[prefix+"interface"] = c.tap.Name
+ }
+ if c.config.Peer != nil {
+ f[prefix+"id"] = c.config.Peer.ID.String()
+ }
+ return f
+}
+
+func (c *Client) postDownAction() error {
+ if c.config.Peer.Down == nil {
+ return nil
+ }
+ err := c.config.Peer.Down(govpn.PeerContext{
+ RemoteAddress: c.config.RemoteAddress,
+ Protocol: c.config.Protocol,
+ Config: *c.config.Peer,
+ })
+ return errors.Wrap(err, "c.config.Peer.Down")
+}
+
+func (c *Client) postUpAction() error {
+ if c.config.Peer.Up == nil {
+ return nil
+ }
+ err := c.config.Peer.Up(govpn.PeerContext{
+ RemoteAddress: c.config.RemoteAddress,
+ Protocol: c.config.Protocol,
+ Config: *c.config.Peer,
+ })
+ return errors.Wrap(err, "c.config.Peer.Up")
+}
+
+// KnownPeers return GoVPN peers. Always 1.
+// used to get client statistics.
+func (c *Client) KnownPeers() *govpn.KnownPeers {
+ return &c.knownPeers
+}
+