]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/sockopt.h
Merge pull request #7220 from idryzhov/fix-clear-isis
[mirror_frr.git] / lib / sockopt.h
index 8fa5987cff967c6097820a79d3f13b40e0dddff7..545abe631fcfedb7935224948805dec77524eec6 100644 (file)
@@ -30,16 +30,16 @@ extern "C" {
 extern void setsockopt_so_recvbuf(int sock, int size);
 extern void setsockopt_so_sendbuf(const int sock, int size);
 extern int getsockopt_so_sendbuf(const int sock);
+extern int getsockopt_so_recvbuf(const int sock);
 
 extern int setsockopt_ipv6_pktinfo(int, int);
-extern int setsockopt_ipv6_checksum(int, int);
 extern int setsockopt_ipv6_multicast_hops(int, int);
 extern int setsockopt_ipv6_unicast_hops(int, int);
 extern int setsockopt_ipv6_hoplimit(int, int);
 extern int setsockopt_ipv6_multicast_loop(int, int);
 extern int setsockopt_ipv6_tclass(int, int);
 
-#define SOPT_SIZE_CMSG_PKTINFO_IPV6() (sizeof (struct in6_pktinfo));
+#define SOPT_SIZE_CMSG_PKTINFO_IPV6() (sizeof(struct in6_pktinfo));
 
 /*
  * Size defines for control messages used to get ifindex.  We define
@@ -49,7 +49,7 @@ extern int setsockopt_ipv6_tclass(int, int);
  */
 #if defined(IP_PKTINFO)
 /* Linux in_pktinfo. */
-#define SOPT_SIZE_CMSG_PKTINFO_IPV4()  (CMSG_SPACE(sizeof (struct in_pktinfo)))
+#define SOPT_SIZE_CMSG_PKTINFO_IPV4()  (CMSG_SPACE(sizeof(struct in_pktinfo)))
 /* XXX This should perhaps be defined even if IP_PKTINFO is not. */
 #define SOPT_SIZE_CMSG_PKTINFO(af)                                             \
   ((af == AF_INET) ? SOPT_SIZE_CMSG_PKTINFO_IPV4() \
@@ -59,11 +59,7 @@ extern int setsockopt_ipv6_tclass(int, int);
 #if defined(IP_RECVIF)
 /* BSD/Solaris */
 
-#if defined(SUNOS_5)
-#define SOPT_SIZE_CMSG_RECVIF_IPV4()  (sizeof (uint_t))
-#else
-#define SOPT_SIZE_CMSG_RECVIF_IPV4()   (sizeof (struct sockaddr_dl))
-#endif /* SUNOS_5 */
+#define SOPT_SIZE_CMSG_RECVIF_IPV4()   (sizeof(struct sockaddr_dl))
 #endif /* IP_RECVIF */
 
 /* SOPT_SIZE_CMSG_IFINDEX_IPV4 - portable type */
@@ -72,7 +68,7 @@ extern int setsockopt_ipv6_tclass(int, int);
 #elif defined(SOPT_SIZE_CMSG_RECVIF_IPV4)
 #define SOPT_SIZE_CMSG_IFINDEX_IPV4() SOPT_SIZE_CMSG_RECVIF_IPV4()
 #else  /* Nothing available */
-#define SOPT_SIZE_CMSG_IFINDEX_IPV4() (sizeof (char *))
+#define SOPT_SIZE_CMSG_IFINDEX_IPV4() (sizeof(char *))
 #endif /* SOPT_SIZE_CMSG_IFINDEX_IPV4 */
 
 #define SOPT_SIZE_CMSG_IFINDEX(af)                                             \
@@ -100,9 +96,43 @@ extern void sockopt_iphdrincl_swab_htosys(struct ip *iph);
 extern void sockopt_iphdrincl_swab_systoh(struct ip *iph);
 
 extern int sockopt_tcp_rtt(int);
+
+/*
+ * TCP MD5 signature option. This option allows TCP MD5 to be enabled on
+ * addresses.
+ *
+ * sock
+ *    Socket to enable option on.
+ *
+ * su
+ *    Sockunion specifying address to enable option on.
+ *
+ * password
+ *    MD5 auth password
+ */
 extern int sockopt_tcp_signature(int sock, union sockunion *su,
                                 const char *password);
 
+/*
+ * Extended TCP MD5 signature option. This option allows TCP MD5 to be enabled
+ * on prefixes.
+ *
+ * sock
+ *    Socket to enable option on.
+ *
+ * su
+ *    Sockunion specifying address (or prefix) to enable option on.
+ *
+ * prefixlen
+ *    0    - su is an address; fall back to non-extended mode
+ *    Else - su is a prefix; prefixlen is the mask length
+ *
+ * password
+ *    MD5 auth password
+ */
+extern int sockopt_tcp_signature_ext(int sock, union sockunion *su,
+                                    uint16_t prefixlen, const char *password);
+
 #ifdef __cplusplus
 }
 #endif