svn commit: r287533 - projects/ifnet/sys/net

Gleb Smirnoff glebius at FreeBSD.org
Mon Sep 7 13:02:26 UTC 2015


Author: glebius
Date: Mon Sep  7 13:02:25 2015
New Revision: 287533
URL: https://svnweb.freebsd.org/changeset/base/287533

Log:
  Sort if.h to reduce ifdef mess:
  
  - POSIX declarations go first, then go BSD_VISIBLE ones: userland ones
    first, kernel ones the last.
  - Move IFCOUNTER enum into userland part, we plan to provide API to
    query particular counters.
  - Use C11 anonymous unions in if_data, to remove ifdefs.
  
  Sponsored by:	Nginx, Inc.

Modified:
  projects/ifnet/sys/net/if.h

Modified: projects/ifnet/sys/net/if.h
==============================================================================
--- projects/ifnet/sys/net/if.h	Mon Sep  7 10:13:14 2015	(r287532)
+++ projects/ifnet/sys/net/if.h	Mon Sep  7 13:02:25 2015	(r287533)
@@ -35,6 +35,24 @@
 
 #include <sys/cdefs.h>
 
+/*
+ * Length of interface external name, including terminating '\0'.
+ * Note: this is the same size as a generic device's external name.
+ */
+#define		IF_NAMESIZE	16
+
+struct if_nameindex {
+	unsigned int	if_index;	/* 1, 2, ... */
+	char		*if_name;	/* null terminated name: "le0", ... */
+};
+
+__BEGIN_DECLS
+void			 if_freenameindex(struct if_nameindex *);
+char			*if_indextoname(unsigned int, char *);
+struct if_nameindex	*if_nameindex(void);
+unsigned int		 if_nametoindex(const char *);
+__END_DECLS
+
 #if __BSD_VISIBLE
 /*
  * <net/if.h> does not depend on <sys/time.h> on most other systems.  This
@@ -45,23 +63,13 @@
 #include <sys/time.h>
 #include <sys/socket.h>
 #endif
-#endif
 
-/*
- * Length of interface external name, including terminating '\0'.
- * Note: this is the same size as a generic device's external name.
- */
-#define		IF_NAMESIZE	16
-#if __BSD_VISIBLE
 #define		IFNAMSIZ	IF_NAMESIZE
 #define		IF_MAXUNIT	0x7fff	/* historical value */
-#endif
-#if __BSD_VISIBLE
 
 /*
  * Structure used to query names of interface cloners.
  */
-
 struct if_clonereq {
 	int	ifcr_total;		/* total cloners (out) */
 	int	ifcr_count;		/* room for this many in user buffer */
@@ -101,21 +109,19 @@ struct if_data {
 
 	/* Unions are here to make sizes MI. */
 	union {				/* uptime at attach or stat reset */
-		time_t		tt;
+		time_t		ifi_epoch;
 		uint64_t	ph;
-	} __ifi_epoch;
-#define	ifi_epoch	__ifi_epoch.tt
+	};
 	union {				/* time of last administrative change */
-		struct timeval	tv;
+		struct timeval	ifi_lastchange;
 		struct {
 			uint64_t ph1;
 			uint64_t ph2;
-		} ph;
-	} __ifi_lastchange;
-#define	ifi_lastchange	__ifi_lastchange.tv
+		};
+	};
 };
 
-/*-
+/*
  * Interface flags are of two types: network stack owned flags, and driver
  * owned flags.  Historically, these values were stored in the same ifnet
  * flags field, but with the advent of fine-grained locking, they have been
@@ -521,21 +527,21 @@ struct ifi2creq {
 	uint8_t data[8];	/* read buffer */
 }; 
 
-#endif /* __BSD_VISIBLE */
-
-#ifndef _KERNEL
-struct if_nameindex {
-	unsigned int	if_index;	/* 1, 2, ... */
-	char		*if_name;	/* null terminated name: "le0", ... */
-};
-
-__BEGIN_DECLS
-void			 if_freenameindex(struct if_nameindex *);
-char			*if_indextoname(unsigned int, char *);
-struct if_nameindex	*if_nameindex(void);
-unsigned int		 if_nametoindex(const char *);
-__END_DECLS
-#endif
+typedef enum {
+	IFCOUNTER_IPACKETS = 0,
+	IFCOUNTER_IERRORS,
+	IFCOUNTER_OPACKETS,
+	IFCOUNTER_OERRORS,
+	IFCOUNTER_COLLISIONS,
+	IFCOUNTER_IBYTES,
+	IFCOUNTER_OBYTES,
+	IFCOUNTER_IMCASTS,
+	IFCOUNTER_OMCASTS,
+	IFCOUNTER_IQDROPS,
+	IFCOUNTER_OQDROPS,
+	IFCOUNTER_NOPROTO,
+	IFCOUNTERS /* Array size (used internally). */
+} ift_counter;
 
 #ifdef _KERNEL
 #include <net/if_types.h>
@@ -557,22 +563,6 @@ MALLOC_DECLARE(M_IFMADDR);
 #endif
 
 typedef enum {
-	IFCOUNTER_IPACKETS = 0,
-	IFCOUNTER_IERRORS,
-	IFCOUNTER_OPACKETS,
-	IFCOUNTER_OERRORS,
-	IFCOUNTER_COLLISIONS,
-	IFCOUNTER_IBYTES,
-	IFCOUNTER_OBYTES,
-	IFCOUNTER_IMCASTS,
-	IFCOUNTER_OMCASTS,
-	IFCOUNTER_IQDROPS,
-	IFCOUNTER_OQDROPS,
-	IFCOUNTER_NOPROTO,
-	IFCOUNTERS /* Array size (used internally). */
-} ift_counter;
-
-typedef enum {
 	IF_NO_SOFTC = 0,
 	IF_DRIVER_SOFTC,
 	IF_LLADDR,
@@ -799,4 +789,5 @@ if_name(if_t ifp)
 	return ((char *)(if_getsoftc(ifp, IF_NAME)));
 }
 #endif /* _KERNEL */
+#endif /* __BSD_VISIBLE_ */
 #endif /* !_NET_IF_H_ */


More information about the svn-src-projects mailing list