PERFORCE change 163542 for review
Gabor Pali
pgj at FreeBSD.org
Fri Jun 5 08:06:02 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=163542
Change 163542 by pgj at petymeg-current on 2009/06/05 08:05:35
Create a type for the "socket" (connection) abstraction, remove
previous code snippets about tcp and udp statistics. Hopefully,
this abstraction will cover them too :)
Affected files ...
.. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/Makefile#3 edit
.. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#3 edit
.. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_all.c#2 delete
.. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#3 edit
.. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_tcp.c#2 delete
.. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_udp.c#2 delete
.. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#3 edit
Differences ...
==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/Makefile#3 (text+ko) ====
@@ -2,8 +2,7 @@
.include <bsd.own.mk>
LIB= netstat
-SRCS= netstat_tcp.c netstat_udp.c \
- netstat_all.c netstat_util.c
+SRCS= netstat.c netstat_util.c
INCS= netstat.h
==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#3 (text+ko) ====
@@ -2,15 +2,9 @@
#ifndef _NETSTAT_H_
#define _NETSTAT_H_
-#define NETSTAT_MAXCPU 32
#define NETSTAT_MAXCALLER 16
-#define NETSTAT_TYPE_UNKNOWN 0
-#define NETSTAT_TYPE_TCP 1
-#define NETSTAT_TYPE_UDP 2
-#define NETSTAT_TYPE_ANY 255
-
-#define NETSTAT_MAXNAME 32
+#define SOCKTYPE_MAXNAME 32
#define NETSTAT_ERROR_UNDEFINED 0
#define NETSTAT_ERROR_NOMEMORY 1
@@ -19,28 +13,23 @@
#define NETSTAT_ERROR_KVM_NOSYMBOL 4
#define NETSTAT_ERROR_KVM_SHORTREAD 5
-struct netstat;
-struct netstat_list;
+struct socket_type;
+struct socket_type_list;
__BEGIN_DECLS
-const char *netstat_strerror(int);
+const char *netstat_strerror(int);
-struct netstat_list *netstat_nsl_alloc(void);
-struct netstat *netstat_nsl_first(struct netstat_list *);
-struct netstat *netstat_nsl_next(struct netstat *);
-struct netstat *netstat_nsl_find(struct netstat_list *,
- int, const char *);
+struct socket_type_list *netstat_stl_alloc(void);
+struct socket_type *netstat_stl_first(struct socket_type_list *);
+struct socket_type *netstat_stl_next(struct socket_type *);
+struct socket_type *netstat_stl_find(struct socket_type_list *,
+ int, const char *);
-void netstat_nsl_free(struct netstat_list *);
-int netstat_nsl_geterror(struct netstat_list *);
+void netstat_stl_free(struct socket_type_list *);
+int netstat_stl_geterror(struct socket_type_list *);
-int netstat_sysctl_all(struct netstat_list *, int);
-int netstat_sysctl_tcp(struct netstat_list *, int);
-int netstat_sysctl_udp(struct netstat_list *, int);
-
-int netstat_kvm_all(struct netstat_list *, void *);
-int netstat_kvm_tcp(struct netstat_list *, void *);
-int netstat_kvm_udp(struct netstat_list *, void *);
+int netstat_sysctl_socket(struct socket_type_list *, int);
+int netstat_kvm_socket(struct socket_type_list *, void *);
__END_DECLS
#endif /* !_NETSTAT_H_ */
==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#3 (text+ko) ====
@@ -3,26 +3,41 @@
#define _NETSTAT_INTERNAL_H_
#include <sys/queue.h>
+#include <sys/socket.h>
#include <kvm.h>
-struct netstat {
- int ns_type;
- char ns_name[NETSTAT_MAXNAME];
+struct socket_type {
+ /* static properties */
+ unsigned short st_family;
+ unsigned short st_protocol;
+ int st_type;
+ int st_flags;
+ char st_name[SOCKTYPE_MAXNAME];
+
+ struct sockaddr_storage *st_local_address;
+ /* local address count, XXX: SCTP */
+ int st_la_cnt;
+ struct sockaddr_storage *st_remote_address;
+ /* remote address count */
+ int st_ra_cnt;
+
+ struct sockcred st_credentials;
- LIST_ENTRY(netstat) ns_list;
+ /* list of types */
+ LIST_ENTRY(socket_type) st_list;
};
-struct netstat_list {
- LIST_HEAD(, netstat) nsl_list;
- int nsl_error;
+struct socket_type_list {
+ LIST_HEAD(, socket_type) stl_list;
+ int stl_error;
};
int kread(kvm_t *, void *, void *, size_t, size_t);
int kread_string(kvm_t *, void *, char *, int);
-void _netstat_nsl_empty(struct netstat_list *);
-struct netstat *_netstat_ns_allocate(struct netstat_list *,
+void _netstat_stl_empty(struct socket_type_list *);
+struct socket_type *_netstat_st_allocate(struct socket_type_list *,
int, const char *);
-void _netstat_ns_reset_stats(struct netstat *);
+void _netstat_ns_reset_stats(struct socket_type *);
#endif /* !_NETSTAT_INTERNAL_H_ */
==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#3 (text+ko) ====
@@ -63,103 +63,103 @@
}
}
-struct netstat_list *
-netstat_nsl_alloc(void)
+struct socket_type_list *
+netstat_stl_alloc(void)
{
- struct netstat_list *nslp;
+ struct socket_type_list *stlp;
- nslp = malloc(sizeof(*nslp));
- if (nslp == NULL)
+ stlp = malloc(sizeof(*stlp));
+ if (stlp == NULL)
return NULL;
- LIST_INIT(&nslp->nsl_list);
- nslp->nsl_error = NETSTAT_ERROR_UNDEFINED;
- return (nslp);
+ LIST_INIT(&stlp->stl_list);
+ stlp->stl_error = NETSTAT_ERROR_UNDEFINED;
+ return (stlp);
}
-struct netstat *
-netstat_nsl_first(struct netstat_list *list)
+struct socket_type *
+netstat_stl_first(struct socket_type_list *list)
{
- return (LIST_FIRST(&list->nsl_list));
+ return (LIST_FIRST(&list->stl_list));
}
-struct netstat *
-netstat_nsl_next(struct netstat * nsp)
+struct socket_type *
+netstat_stl_next(struct socket_type *stp)
{
- return (LIST_NEXT(nsp, ns_list));
+ return (LIST_NEXT(stp, st_list));
}
void
-_netstat_nsl_empty(struct netstat_list *list)
+_netstat_stl_empty(struct socket_type_list *list)
{
- struct netstat *nsp;
+ struct socket_type *stp;
- while ((nsp = LIST_FIRST(&list->nsl_list))) {
- LIST_REMOVE(nsp, ns_list);
- free(nsp);
+ while ((stp = LIST_FIRST(&list->stl_list))) {
+ LIST_REMOVE(stp, st_list);
+ free(stp);
}
}
void
-_netstat_nsl_free(struct netstat_list *list)
+_netstat_stl_free(struct socket_type_list *list)
{
- _netstat_nsl_empty(list);
+ _netstat_stl_empty(list);
free(list);
}
int
-netstat_nsl_geterror(struct netstat_list *list)
+netstat_stl_geterror(struct socket_type_list *list)
{
- return (list->nsl_error);
+ return (list->stl_error);
}
-struct netstat *
-netstat_nsl_find(struct netstat_list *list, int ns_type,
+struct socket_type *
+netstat_stl_find(struct socket_type_list *list, int st_type,
const char *name)
{
- struct netstat *nsp;
+ struct socket_type *stp;
- LIST_FOREACH(nsp, &list->nsl_list, ns_list) {
- if ((nsp->ns_type == ns_type ||
- ns_type == NETSTAT_TYPE_ANY) &&
- strcmp(nsp->ns_name, name) == 0)
- return (nsp);
+ /* XXX: no "any" */
+ LIST_FOREACH(stp, &list->stl_list, st_list) {
+ if ((stp->st_type == st_type) &&
+ strcmp(stp->st_name, name) == 0)
+ return (stp);
}
return (NULL);
}
-struct netstat *
-_netstat_ns_allocate(struct netstat_list *list, int ns_type,
+struct socket_type *
+_netstat_st_allocate(struct socket_type_list *list, int st_type,
const char *name)
{
- struct netstat *nsp;
+ struct socket_type *stp;
- nsp = malloc(sizeof(*nsp));
- if (nsp == NULL)
+ stp = malloc(sizeof(*stp));
+ if (stp == NULL)
return (NULL);
- bzero(nsp, sizeof(*nsp));
+ bzero(stp, sizeof(*stp));
- nsp->ns_type = ns_type;
- strlcpy(nsp->ns_name, name, NETSTAT_MAXNAME);
- LIST_INSERT_HEAD(&list->nsl_list, nsp, ns_list);
- return (nsp);
+ stp->st_type = st_type;
+ strlcpy(stp->st_name, name, SOCKTYPE_MAXNAME);
+ LIST_INSERT_HEAD(&list->stl_list, stp, st_list);
+ return (stp);
}
void
-_netstat_ns_reset_stats(struct netstat *nsp)
+_netstat_st_reset_stats(struct socket_type *stp)
{
}
const char *
-netstat_get_name(const struct netstat *nsp)
+netstat_st_get_name(const struct socket_type *stp)
{
- return (nsp->ns_name);
+ return (stp->st_name);
}
int
-netstat_get_type(const struct netstat *nsp)
+netstat_st_get_type(const struct socket_type *stp)
{
- return (nsp->ns_type);
+ return (stp->st_type);
}
More information about the p4-projects
mailing list