svn commit: r191460 - projects/mesh11s/sys/net80211
Rui Paulo
rpaulo at FreeBSD.org
Fri Apr 24 10:27:58 UTC 2009
Author: rpaulo
Date: Fri Apr 24 10:27:57 2009
New Revision: 191460
URL: http://svn.freebsd.org/changeset/base/191460
Log:
Don't polute ieee80211.h with mesh definitions. We have ieee80211_mesh.h
just for that.
Sponsored by: The FreeBSD Foundation
Modified:
projects/mesh11s/sys/net80211/ieee80211.h
projects/mesh11s/sys/net80211/ieee80211_mesh.h
Modified: projects/mesh11s/sys/net80211/ieee80211.h
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211.h Fri Apr 24 10:19:25 2009 (r191459)
+++ projects/mesh11s/sys/net80211/ieee80211.h Fri Apr 24 10:27:57 2009 (r191460)
@@ -775,264 +775,6 @@ struct ieee80211_csa_ie {
#define IEEE80211_ERP_BITS \
"\20\1NON_ERP_PRESENT\2USE_PROTECTION\3LONG_PREAMBLE"
-/*
- * 802.11s Information Elements.
-*/
-/* Mesh Configuration */
-struct ieee80211_meshconf_ie {
- uint8_t conf_ie; /* IEEE80211_ELEMID_MESHCONF */
- uint8_t conf_len;
- uint8_t conf_ver;
- uint32_t conf_apspi; /* Active Path Sel. Proto. ID */
- uint32_t conf_apsmi; /* APS Metric Identifier */
- uint32_t conf_ccmi; /* Congestion Control Mode ID */
- uint8_t conf_finfo; /* Formation Information */
- uint8_t conf_cap;
-} __packed;
-
-#define IEEE80211_MESHCONF_APSPI_HWMP_OUI 0x000fac
-#define IEEE80211_MESHCONF_APSPI_HWMP_VALUE 0xff /* XXX Linux */
-#define IEEE80211_MESHCONF_APSMI_AIRTIME_OUI 0x000fac
-#define IEEE80211_MESHCONF_APSMI_AIRTIME_VALUE 0xff /* XXX Linux */
-#define IEEE80211_MESHCONF_CCMI_DEFAULT_OUI 0x000fac
-#define IEEE80211_MESHCONF_CCMI_DEFAULT_VALUE 0xff /* XXX Linux */
-#define IEEE80211_MESHCONF_CCMI_NULL_OUI 0x000fac
-#define IEEE80211_MESHCONF_CCMI_NULL_VALUE 255
-#define IEEE80211_MESHCONF_FORM_MP (1 << 1) /* connected to portal */
-#define IEEE80211_MESHCONF_FORM_NEIGH (1 << 4) /* no of neighbours */
-
-/* Mesh Identifier */
-struct ieee80211_meshid_ie {
- uint8_t id_ie; /* IEEE80211_ELEMID_MESHID */
- uint8_t id_len;
-} __packed;
-
-#define IEEE80211_MESHID_MAX_SIZE \
- (sizeof(struct ieee80211_meshid_ie) + IEEE80211_NWID_LEN)
-
-/* Link Metric Report */
-struct ieee80211_meshlink_ie {
- uint8_t link_ie; /* IEEE80211_ELEMID_MESHLINK */
- uint8_t link_len;
- /* XXXRP: missing variable metric */
-} __packed;
-
-/* Congestion Notification */
-struct ieee80211_meshcngst_ie {
- uint8_t cngst_ie; /* IEEE80211_ELEMID_MESHCNGST */
- uint8_t cngst_len;
- uint16_t cngst_timer[4]; /* Expiration Timers: AC_BK,
- AC_BE, AC_VI, AC_VO */
-} __packed;
-
-/* Peer Link Management */
-struct ieee80211_meshpeer_ie {
- uint8_t peer_ie; /* IEEE80211_ELEMID_MESHPEER */
- uint8_t peer_len;
- uint8_t peer_subtype;
- uint16_t peer_llinkid; /* Local Link ID */
- uint16_t peer_linkid; /* Peer Link ID */
- uint16_t peer_rcode;
-} __packed;
-
-enum {
- IEEE80211_MESH_PEER_LINK_OPEN = 0,
- IEEE80211_MESH_PEER_LINK_CONFIRM = 1,
- IEEE80211_MESH_PEER_LINK_CLOSE = 2,
- /* values 3-255 are reserved */
-};
-
-/* Mesh Channel Switch Annoucement */
-struct ieee80211_meshcsa_ie {
- uint8_t csa_ie; /* IEEE80211_ELEMID_MESHCSA */
- uint8_t csa_len;
- uint8_t csa_mode;
- uint8_t csa_newclass; /* New Regulatory Class */
- uint8_t csa_newchan;
- uint8_t csa_precvalue; /* Precedence Value */
- uint8_t csa_count;
-} __packed;
-
-/* XXXRP: this is equal to the non mesh version. Should we simplify ? */
-/* Mesh TIM */
-struct ieee80211_meshtim_ie {
- uint8_t tim_ie; /* IEEE80211_ELEMID_MESHTIM */
- uint8_t tim_len;
- uint8_t tim_count; /* DTIM count */
- uint8_t tim_period; /* DTIM period */
- uint8_t tim_bitctl; /* bitmap control */
- uint8_t tim_bitmap[1]; /* variable-length bitmap */
-} __packed;
-
-/* Mesh Awake Window */
-struct ieee80211_meshawakew_ie {
- uint8_t awakew_ie; /* IEEE80211_ELEMID_MESHAWAKEW */
- uint8_t awakew_len;
- uint8_t awakew_windowlen; /* in TUs */
-} __packed;
-
-/* Mesh Beacon Timing */
-struct ieee80211_meshbeacont_ie {
- uint8_t beacont_ie; /* IEEE80211_ELEMID_MESHBEACONT */
- uint8_t beacont_len;
- struct {
- uint8_t mp_aid; /* Least Octet of AID */
- uint16_t mp_btime; /* Beacon Time */
- uint16_t mp_bint; /* Beacon Interval */
- } mp[1] __packed; /* NB: variable size */
-} __packed;
-
-/* Mesh Timing Info */
-struct ieee80211_meshtinfo_ie {
- uint8_t tinfo_ie; /* IEEE80211_ELEMID_MESHTIMINGINFO */
- uint8_t tinfo_len;
- uint8_t tinfo_field;
-} __packed;
-
-#define IEEE80211_MESH_TINFO_BEACON_PARAMS_CHANGED (1 << 8)
-#define IEEE80211_MESH_TINFO_MDA_ENABLED (1 << 7)
-
-/* Synchronization Protocol */
-struct ieee80211_meshsyncproto_ie {
- uint8_t syncproto_ie; /* IEEE80211_ELEMID_MESHSYNCPROTO */
- uint8_t syncproto_len;
- uint32_t syncproto_id; /* Sync Protocol ID OUI */
-} __packed;
-
-/* Neighbour Offset Protocol */
-#define IEEE80211_MESH_SYNCPROTO_NEIGHOFFSET_OUI 0x000fac
-#define IEEE80211_MESH_SYNCPROTO_NEIGHOFFSET_VALUE 0
-
-/* MDAOP Setup Request */
-struct ieee80211_meshdaopsreq_ie {
- uint8_t daopsreq_ie; /* IEEE80211_ELEMID_MESHDAOPSREQ */
- uint8_t daopsreq_len;
- uint8_t daopsreq_setid;
- uint32_t daposreq_reserv; /* MDAOP Reservation */
-} __packed;
-
-/* MDAOP Setup Reply */
-struct ieee80211_meshdaopsrep_ie {
- uint8_t daopsrep_ie; /* IEEE80211_ELEMID_MESHDAOPSREPLY */
- uint8_t daopsrep_len;
- uint8_t daopsrep_setid;
- uint8_t daopsrep_code; /* Reply Code */
- uint8_t daopsrep_reserv; /* MDAOP Reservation */
-} __packed;
-
-enum {
- IEEE80211_MESH_DAOP_REPLY_ACCEPT = 0,
- IEEE80211_MESH_DAOP_REPLY_RESERV_CONFLICT = 1,
- IEEE80211_MESH_DAOP_REPLY_MAF_LIMIT = 2,
- /* everything else is reserved */
-};
-
-/* MDAOP Advertisements */
-/* TBD */
-
-
-/* MDAOP Set Teardown */
-struct ieee80211_meshdaopst_ie {
- uint8_t daopsrep_ie; /* IEEE80211_ELEMID_MESHDAOPSREP */
- uint8_t daopsrep_len;
- uint8_t daopsrep_setid;
- uint8_t daopsrep_setowner[IEEE80211_ADDR_LEN];
-} __packed;
-
-/* Portal (MP) Annoucement */
-struct ieee80211_meshpann_ie {
- uint8_t pann_ie; /* IEEE80211_ELEMID_MESHPANN */
- uint8_t pann_len;
- uint8_t pann_flags;
- uint8_t pann_hopcount;
- uint8_t pann_ttl;
- uint8_t pann_addr[IEEE80211_ADDR_LEN];
- uint8_t pann_seq; /* PANN Sequence Number */
-} __packed;
-
-/* Root (MP) Annoucement */
-struct ieee80211_meshrann_ie {
- uint8_t rann_ie; /* IEEE80211_ELEMID_MESHRANN */
- uint8_t rann_len;
- uint8_t rann_flags;
- uint8_t rann_hopcount;
- uint8_t rann_ttl;
- uint8_t rann_addr[IEEE80211_ADDR_LEN];
- uint32_t rann_seq; /* HWMP Sequence Number */
- uint32_t rann_metric;
-} __packed;
-
-/* Mesh Path Request */
-struct ieee80211_meshpreq_ie {
- uint8_t preq_ie; /* IEEE80211_ELEMID_MESHPREQ */
- uint8_t preq_len;
- /* XXXRP: TBD */
-} __packed;
-
-/* Mesh Path Reply */
-struct ieee80211_meshprep_ie {
- uint8_t prep_ie; /* IEEE80211_ELEMID_MESHPREP */
- uint8_t prep_len;
- /* XXXRP: TBD */
-} __packed;
-
-/* Mesh Path Error */
-struct ieee80211_meshperr_ie {
- uint8_t perr_ie; /* IEEE80211_ELEMID_MESHPERR */
- uint8_t perr_len;
- uint8_t perr_mode;
- uint8_t perr_ndests; /* Number of Destinations */
- struct {
- uint8_t dest_addr[IEEE80211_ADDR_LEN];
- uint32_t dest_seq;
- } dests[1] __packed; /* NB: variable size */
-} __packed;
-
-/* Mesh Proxy Update */
-struct ieee80211_meshpu_ie {
- uint8_t pu_ie; /* IEEE80211_ELEMID_MESHPU */
- uint8_t pu_len;
- /* XXXRP: TBD */
-} __packed;
-
-/* Mesh Proxy Update Confirmation */
-struct ieee80211_meshpuc_ie {
- uint8_t puc_ie; /* IEEE80211_ELEMID_MESHPUC */
- uint8_t puc_len;
- uint8_t puc_flags;
- uint8_t puc_seq; /* PU Sequence Number */
- uint8_t puc_daddr[IEEE80211_ADDR_LEN];
-} __packed;
-
-/* Mesh Security Capability */
-struct ieee80211_meshsc_ie {
- uint8_t sc_ie; /* IEEE80211_ELEMID_MESHSC */
- uint8_t sc_len;
- uint8_t sc_mkdid[IEEE80211_ADDR_LEN]; /* MKD Domain ID */
- uint8_t sc_sconfig; /* Security Configuration */
-} __packed;
-
-/* Mesh Security Authentication */
-struct ieee80211_meshsa_ie {
- uint8_t sa_ie; /* IEEE80211_ELEMID_MESHSA */
- uint8_t sa_len;
- uint8_t sa_handshake;
- uint8_t sa_maid[IEEE80211_ADDR_LEN]; /* MA-ID */
- uint8_t sa_lmpid[IEEE80211_ADDR_LEN];
- uint32_t sa_akm; /* Selected AKM Suite */
- uint32_t sa_pcs; /* Selected Pairwise Cipher Suite */
- uint8_t sa_pmk[16];
- uint8_t sa_lnonce[32];
- uint8_t sa_pnonce[32];
- /* XXX more parameters */
-} __packed;
-
-/* Mesh Anti-Clogging Token */
-struct ieee80211_meshact_ie {
- uint8_t act_ie; /* IEEE80211_ELEMID_MESHACT */
- uint8_t act_len;
-} __packed;
-
#define ATH_OUI 0x7f0300 /* Atheros OUI */
#define ATH_OUI_TYPE 0x01 /* Atheros protocol ie */
Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.h
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_mesh.h Fri Apr 24 10:19:25 2009 (r191459)
+++ projects/mesh11s/sys/net80211/ieee80211_mesh.h Fri Apr 24 10:27:57 2009 (r191460)
@@ -31,6 +31,265 @@
#ifndef _NET80211_IEEE80211_MESH_H_
#define _NET80211_IEEE80211_MESH_H_
+/*
+ * 802.11s Information Elements.
+*/
+/* Mesh Configuration */
+struct ieee80211_meshconf_ie {
+ uint8_t conf_ie; /* IEEE80211_ELEMID_MESHCONF */
+ uint8_t conf_len;
+ uint8_t conf_ver;
+ uint32_t conf_apspi; /* Active Path Sel. Proto. ID */
+ uint32_t conf_apsmi; /* APS Metric Identifier */
+ uint32_t conf_ccmi; /* Congestion Control Mode ID */
+ uint8_t conf_finfo; /* Formation Information */
+ uint8_t conf_cap;
+} __packed;
+
+#define IEEE80211_MESHCONF_APSPI_HWMP_OUI 0x000fac
+#define IEEE80211_MESHCONF_APSPI_HWMP_VALUE 0xff /* XXX Linux */
+#define IEEE80211_MESHCONF_APSMI_AIRTIME_OUI 0x000fac
+#define IEEE80211_MESHCONF_APSMI_AIRTIME_VALUE 0xff /* XXX Linux */
+#define IEEE80211_MESHCONF_CCMI_DEFAULT_OUI 0x000fac
+#define IEEE80211_MESHCONF_CCMI_DEFAULT_VALUE 0xff /* XXX Linux */
+#define IEEE80211_MESHCONF_CCMI_NULL_OUI 0x000fac
+#define IEEE80211_MESHCONF_CCMI_NULL_VALUE 255
+#define IEEE80211_MESHCONF_FORM_MP (1 << 1) /* connected to portal */
+#define IEEE80211_MESHCONF_FORM_NEIGH (1 << 4) /* no of neighbours */
+
+/* Mesh Identifier */
+struct ieee80211_meshid_ie {
+ uint8_t id_ie; /* IEEE80211_ELEMID_MESHID */
+ uint8_t id_len;
+} __packed;
+
+#define IEEE80211_MESHID_MAX_SIZE \
+ (sizeof(struct ieee80211_meshid_ie) + IEEE80211_NWID_LEN)
+
+/* Link Metric Report */
+struct ieee80211_meshlink_ie {
+ uint8_t link_ie; /* IEEE80211_ELEMID_MESHLINK */
+ uint8_t link_len;
+ /* XXXRP: missing variable metric */
+} __packed;
+
+/* Congestion Notification */
+struct ieee80211_meshcngst_ie {
+ uint8_t cngst_ie; /* IEEE80211_ELEMID_MESHCNGST */
+ uint8_t cngst_len;
+ uint16_t cngst_timer[4]; /* Expiration Timers: AC_BK,
+ AC_BE, AC_VI, AC_VO */
+} __packed;
+
+/* Peer Link Management */
+struct ieee80211_meshpeer_ie {
+ uint8_t peer_ie; /* IEEE80211_ELEMID_MESHPEER */
+ uint8_t peer_len;
+ uint8_t peer_subtype;
+ uint16_t peer_llinkid; /* Local Link ID */
+ uint16_t peer_linkid; /* Peer Link ID */
+ uint16_t peer_rcode;
+} __packed;
+
+enum {
+ IEEE80211_MESH_PEER_LINK_OPEN = 0,
+ IEEE80211_MESH_PEER_LINK_CONFIRM = 1,
+ IEEE80211_MESH_PEER_LINK_CLOSE = 2,
+ /* values 3-255 are reserved */
+};
+
+/* Mesh Channel Switch Annoucement */
+struct ieee80211_meshcsa_ie {
+ uint8_t csa_ie; /* IEEE80211_ELEMID_MESHCSA */
+ uint8_t csa_len;
+ uint8_t csa_mode;
+ uint8_t csa_newclass; /* New Regulatory Class */
+ uint8_t csa_newchan;
+ uint8_t csa_precvalue; /* Precedence Value */
+ uint8_t csa_count;
+} __packed;
+
+/* XXXRP: this is equal to the non mesh version. Should we simplify ? */
+/* Mesh TIM */
+struct ieee80211_meshtim_ie {
+ uint8_t tim_ie; /* IEEE80211_ELEMID_MESHTIM */
+ uint8_t tim_len;
+ uint8_t tim_count; /* DTIM count */
+ uint8_t tim_period; /* DTIM period */
+ uint8_t tim_bitctl; /* bitmap control */
+ uint8_t tim_bitmap[1]; /* variable-length bitmap */
+} __packed;
+
+/* Mesh Awake Window */
+struct ieee80211_meshawakew_ie {
+ uint8_t awakew_ie; /* IEEE80211_ELEMID_MESHAWAKEW */
+ uint8_t awakew_len;
+ uint8_t awakew_windowlen; /* in TUs */
+} __packed;
+
+/* Mesh Beacon Timing */
+struct ieee80211_meshbeacont_ie {
+ uint8_t beacont_ie; /* IEEE80211_ELEMID_MESHBEACONT */
+ uint8_t beacont_len;
+ struct {
+ uint8_t mp_aid; /* Least Octet of AID */
+ uint16_t mp_btime; /* Beacon Time */
+ uint16_t mp_bint; /* Beacon Interval */
+ } mp[1] __packed; /* NB: variable size */
+} __packed;
+
+/* Mesh Timing Info */
+struct ieee80211_meshtinfo_ie {
+ uint8_t tinfo_ie; /* IEEE80211_ELEMID_MESHTIMINGINFO */
+ uint8_t tinfo_len;
+ uint8_t tinfo_field;
+} __packed;
+
+#define IEEE80211_MESH_TINFO_BEACON_PARAMS_CHANGED (1 << 8)
+#define IEEE80211_MESH_TINFO_MDA_ENABLED (1 << 7)
+
+/* Synchronization Protocol */
+struct ieee80211_meshsyncproto_ie {
+ uint8_t syncproto_ie; /* IEEE80211_ELEMID_MESHSYNCPROTO */
+ uint8_t syncproto_len;
+ uint32_t syncproto_id; /* Sync Protocol ID OUI */
+} __packed;
+
+/* Neighbour Offset Protocol */
+#define IEEE80211_MESH_SYNCPROTO_NEIGHOFFSET_OUI 0x000fac
+#define IEEE80211_MESH_SYNCPROTO_NEIGHOFFSET_VALUE 0
+
+/* MDAOP Setup Request */
+struct ieee80211_meshdaopsreq_ie {
+ uint8_t daopsreq_ie; /* IEEE80211_ELEMID_MESHDAOPSREQ */
+ uint8_t daopsreq_len;
+ uint8_t daopsreq_setid;
+ uint32_t daposreq_reserv; /* MDAOP Reservation */
+} __packed;
+
+/* MDAOP Setup Reply */
+struct ieee80211_meshdaopsrep_ie {
+ uint8_t daopsrep_ie; /* IEEE80211_ELEMID_MESHDAOPSREPLY */
+ uint8_t daopsrep_len;
+ uint8_t daopsrep_setid;
+ uint8_t daopsrep_code; /* Reply Code */
+ uint8_t daopsrep_reserv; /* MDAOP Reservation */
+} __packed;
+
+enum {
+ IEEE80211_MESH_DAOP_REPLY_ACCEPT = 0,
+ IEEE80211_MESH_DAOP_REPLY_RESERV_CONFLICT = 1,
+ IEEE80211_MESH_DAOP_REPLY_MAF_LIMIT = 2,
+ /* everything else is reserved */
+};
+
+/* MDAOP Advertisements */
+/* TBD */
+
+
+/* MDAOP Set Teardown */
+struct ieee80211_meshdaopst_ie {
+ uint8_t daopsrep_ie; /* IEEE80211_ELEMID_MESHDAOPSREP */
+ uint8_t daopsrep_len;
+ uint8_t daopsrep_setid;
+ uint8_t daopsrep_setowner[IEEE80211_ADDR_LEN];
+} __packed;
+
+/* Portal (MP) Annoucement */
+struct ieee80211_meshpann_ie {
+ uint8_t pann_ie; /* IEEE80211_ELEMID_MESHPANN */
+ uint8_t pann_len;
+ uint8_t pann_flags;
+ uint8_t pann_hopcount;
+ uint8_t pann_ttl;
+ uint8_t pann_addr[IEEE80211_ADDR_LEN];
+ uint8_t pann_seq; /* PANN Sequence Number */
+} __packed;
+
+/* Root (MP) Annoucement */
+struct ieee80211_meshrann_ie {
+ uint8_t rann_ie; /* IEEE80211_ELEMID_MESHRANN */
+ uint8_t rann_len;
+ uint8_t rann_flags;
+ uint8_t rann_hopcount;
+ uint8_t rann_ttl;
+ uint8_t rann_addr[IEEE80211_ADDR_LEN];
+ uint32_t rann_seq; /* HWMP Sequence Number */
+ uint32_t rann_metric;
+} __packed;
+
+/* Mesh Path Request */
+struct ieee80211_meshpreq_ie {
+ uint8_t preq_ie; /* IEEE80211_ELEMID_MESHPREQ */
+ uint8_t preq_len;
+ /* XXXRP: TBD */
+} __packed;
+
+/* Mesh Path Reply */
+struct ieee80211_meshprep_ie {
+ uint8_t prep_ie; /* IEEE80211_ELEMID_MESHPREP */
+ uint8_t prep_len;
+ /* XXXRP: TBD */
+} __packed;
+
+/* Mesh Path Error */
+struct ieee80211_meshperr_ie {
+ uint8_t perr_ie; /* IEEE80211_ELEMID_MESHPERR */
+ uint8_t perr_len;
+ uint8_t perr_mode;
+ uint8_t perr_ndests; /* Number of Destinations */
+ struct {
+ uint8_t dest_addr[IEEE80211_ADDR_LEN];
+ uint32_t dest_seq;
+ } dests[1] __packed; /* NB: variable size */
+} __packed;
+
+/* Mesh Proxy Update */
+struct ieee80211_meshpu_ie {
+ uint8_t pu_ie; /* IEEE80211_ELEMID_MESHPU */
+ uint8_t pu_len;
+ /* XXXRP: TBD */
+} __packed;
+
+/* Mesh Proxy Update Confirmation */
+struct ieee80211_meshpuc_ie {
+ uint8_t puc_ie; /* IEEE80211_ELEMID_MESHPUC */
+ uint8_t puc_len;
+ uint8_t puc_flags;
+ uint8_t puc_seq; /* PU Sequence Number */
+ uint8_t puc_daddr[IEEE80211_ADDR_LEN];
+} __packed;
+
+/* Mesh Security Capability */
+struct ieee80211_meshsc_ie {
+ uint8_t sc_ie; /* IEEE80211_ELEMID_MESHSC */
+ uint8_t sc_len;
+ uint8_t sc_mkdid[IEEE80211_ADDR_LEN]; /* MKD Domain ID */
+ uint8_t sc_sconfig; /* Security Configuration */
+} __packed;
+
+/* Mesh Security Authentication */
+struct ieee80211_meshsa_ie {
+ uint8_t sa_ie; /* IEEE80211_ELEMID_MESHSA */
+ uint8_t sa_len;
+ uint8_t sa_handshake;
+ uint8_t sa_maid[IEEE80211_ADDR_LEN]; /* MA-ID */
+ uint8_t sa_lmpid[IEEE80211_ADDR_LEN];
+ uint32_t sa_akm; /* Selected AKM Suite */
+ uint32_t sa_pcs; /* Selected Pairwise Cipher Suite */
+ uint8_t sa_pmk[16];
+ uint8_t sa_lnonce[32];
+ uint8_t sa_pnonce[32];
+ /* XXX more parameters */
+} __packed;
+
+/* Mesh Anti-Clogging Token */
+struct ieee80211_meshact_ie {
+ uint8_t act_ie; /* IEEE80211_ELEMID_MESHACT */
+ uint8_t act_len;
+} __packed;
+
+
void ieee80211_mesh_attach(struct ieee80211com *);
void ieee80211_mesh_detach(struct ieee80211com *);
More information about the svn-src-projects
mailing list