19#ifndef __PTPMGMT_SOCK_H
20#define __PTPMGMT_SOCK_H
24#ifdef __PTPMGMT_HAVE_SYS_UN_H
27#ifdef __PTPMGMT_HAVE_NETINET_IN_H
28#include <netinet/in.h>
31#include <linux/if_packet.h>
36__PTPMGMT_NAMESPACE_BEGIN
48 bool m_isInit =
false;
50 bool sendReply(ssize_t cnt,
size_t len)
const;
51 virtual bool sendBase(
const void *msg,
size_t len)
const = 0;
52 virtual ssize_t rcvBase(
void *buf,
size_t bufSize,
bool block)
const = 0;
53 virtual bool initBase() = 0;
54 virtual void closeChild() {}
78 bool send(
const void *msg,
size_t len)
const;
87 bool send(
const Buf &buf,
size_t len)
const;
107 ssize_t
rcv(
void *buf,
size_t bufSize,
bool block =
false)
const;
116 ssize_t
rcv(
Buf &buf,
bool block =
false)
const;
143 #ifdef __PTPMGMT_SWIG_THREAD_START
144 __PTPMGMT_SWIG_THREAD_START;
160 bool poll(uint64_t timeout_ms = 0)
const;
178 bool tpoll(uint64_t &timeout_ms)
const;
179 #ifdef __PTPMGMT_SWIG_THREAD_END
180 __PTPMGMT_SWIG_THREAD_END;
193 static std::string m_homeDir;
194 std::string m_me, m_peer, m_lastFrom;
195 sockaddr_un m_peerAddr;
196 bool setPeerInternal(
const std::string &str,
bool useAbstract);
197 bool sendAny(
const void *msg,
size_t len,
const sockaddr_un &addr)
const;
198 static void setUnixAddr(sockaddr_un &addr,
const std::string &str);
200 bool sendBase(
const void *msg,
size_t len)
const override final;
201 ssize_t rcvBase(
void *buf,
size_t bufSize,
bool block)
const override final;
202 bool initBase()
override final;
203 void closeChild()
override final;
276 const std::string &useDef =
"");
299 bool sendTo(
const void *msg,
size_t len,
const std::string &addrStr,
300 bool useAbstract =
false)
const;
313 bool sendTo(
const Buf &buf,
size_t len,
const std::string &addrStr,
314 bool useAbstract =
false)
const;
326 ssize_t
rcvFrom(
void *buf,
size_t bufSize, std::string &from,
327 bool block =
false)
const;
338 ssize_t
rcvFrom(
Buf &buf, std::string &from,
bool block =
false)
const;
349 ssize_t
rcvFrom(
void *buf,
size_t bufSize,
bool block =
false);
409 std::string m_ifName;
412 bool m_have_if =
false;
413 bool setInt(
const IfInfo &ifObj);
415 virtual bool setAllBase(
const ConfigFile &cfg,
const std::string §ion) = 0;
459 const std::string §ion =
"");
473 const std::string §ion =
"");
486 int m_domain, m_udp_ttl = -1;
490 const char *m_mcast_str;
492 SockIp(
int domain,
const char *mcast, sockaddr *addr,
size_t len);
493 virtual bool initIp() = 0;
494 bool sendBase(
const void *msg,
size_t len)
const override final;
495 ssize_t rcvBase(
void *buf,
size_t bufSize,
bool block)
const override final;
496 bool initBase()
override final;
532 bool initIp()
override final;
534 const std::string §ion)
override final;
546 sockaddr_in6 m_addr6;
547 int m_udp6_scope = -1;
549 bool initIp()
override final;
551 const std::string §ion)
override final;
586 int m_socket_priority = -1;
587 sockaddr_ll m_addr = {0};
591 const std::string §ion)
override final;
592 bool sendBase(
const void *msg,
size_t len)
const override final;
593 ssize_t rcvBase(
void *buf,
size_t bufSize,
bool block)
const override final;
594 bool initBase()
override final;
663__PTPMGMT_NAMESPACE_END
Buffer for send, receive, build, and parse.
C interface to sockets classes.
Read ptp4l Configuration file.
Hold configuration parameters.
Definition cfg.h:34
Base for socket that uses network interface directly.
Definition sock.h:406
bool setIfUsingIndex(int ifIndex)
bool setIf(const IfInfo &ifObj)
bool setIfUsingName(const std::string &ifName)
bool setAllInit(const IfInfo &ifObj, const ConfigFile &cfg, const std::string §ion="")
bool setAll(const IfInfo &ifObj, const ConfigFile &cfg, const std::string §ion="")
Base class for all sockets.
Definition sock.h:44
bool sendBuf(const Buf &buf, size_t len) const
ssize_t rcv(Buf &buf, bool block=false) const
bool send(const void *msg, size_t len) const
bool tpoll(uint64_t &timeout_ms) const
ssize_t rcv(void *buf, size_t bufSize, bool block=false) const
bool send(const Buf &buf, size_t len) const
bool poll(uint64_t timeout_ms=0) const
ssize_t rcvBuf(Buf &buf, bool block=false) const
bool setScope(const ConfigFile &cfg, const std::string §ion="")
bool setScope(uint8_t udp6_scope)
Base for UDP sockets.
Definition sock.h:483
bool setUdpTtl(const ConfigFile &cfg, const std::string §ion="")
bool setUdpTtl(uint8_t udp_ttl)
bool setPtpDstMac(const void *ptp_dst_mac, size_t len)
bool setPtpDstMac(const ConfigFile &cfg, const std::string §ion="")
bool setSocketPriority(const ConfigFile &cfg, const std::string §ion="")
bool setPtpDstMacStr(const std::string &string)
bool setPtpDstMac(const Binary &ptp_dst_mac)
bool setSocketPriority(uint8_t socket_priority)
Unix socket.
Definition sock.h:191
ssize_t rcvFrom(void *buf, size_t bufSize, std::string &from, bool block=false) const
bool sendTo(const Buf &buf, size_t len, const std::string &addrStr, bool useAbstract=false) const
bool setPeerAddress(const ConfigFile &cfg, const std::string §ion="")
const char * getLastFrom_c() const
ssize_t rcvFrom(Buf &buf, bool block=false)
static bool isAddressAbstract(const std::string &addr)
const std::string & getPeerAddress() const
bool setDefSelfAddress(const std::string &rootBase="", const std::string &useDef="")
ssize_t rcvBufFrom(Buf &buf, bool block=false)
bool setSelfAddress(const std::string &string, bool useAbstract=false)
const std::string & getLastFrom() const
const char * getPeerAddress_c() const
bool isPeerAddressAbstract() const
ssize_t rcvFrom(void *buf, size_t bufSize, bool block=false)
const std::string & getSelfAddress() const
bool sendTo(const void *msg, size_t len, const std::string &addrStr, bool useAbstract=false) const
bool isSelfAddressAbstract() const
bool isLastFromAbstract() const
ssize_t rcvFrom(Buf &buf, std::string &from, bool block=false) const
static const char * getHomeDir_c()
bool setPeerAddress(const std::string &string, bool useAbstract=false)
static const std::string & getHomeDir()
const char * getSelfAddress_c() const
Read network interface information and retrieve the PTP information.