00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef WIFI_FRAME_SEQCTL_BSSID_TIMESTAMP_ID_HXX_
00023 # define WIFI_FRAME_SEQCTL_BSSID_TIMESTAMP_ID_HXX_
00024
00025 # include "seqctl_bssid_timestamp.hh"
00026
00027 namespace wifi
00028 {
00029
00030 namespace frame
00031 {
00032
00033 template <>
00034 inline
00035 boost::optional<seqctl_bssid_timestamp_id>
00036 make_unique_id<seqctl_bssid_timestamp_id,
00037 prism::header>(const pcapxx::frame_descriptor& desc,
00038 addr_mapping& mapping,
00039 bool prism_noise_means_error)
00040 {
00041 tt_make_unique_id_prism_common(desc, prism_noise_means_error,
00042 d, internals::id_helper_hooks, h);
00043
00044 const timestamp* t = h.timestamp_ptr();
00045 const addr* a = h.addr_ptr(mgt::header::bssid);
00046 const uint16_t* s = h.seq_ctl_ptr();
00047
00048 assert(not t or (a and s));
00049 if (t)
00050 return seqctl_bssid_timestamp_id (desc.pcap_header()->id,
00051 *s, mapping[*a], *t);
00052 else
00053 return boost::none_t ();
00054 }
00055
00056 }
00057
00058 }
00059
00060 #endif // ! WIFI_FRAME_SEQCTL_BSSID_TIMESTAMP_ID_HXX_
00061