00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef WIFI_SEQCTL_BSSID_TIMESTAMP_ID_HXX_
00023 # define WIFI_SEQCTL_BSSID_TIMESTAMP_ID_HXX_
00024
00025 # include "seqctl_bssid_timestamp.hh"
00026
00027 # include <wipal/wifi/unique_id/helper_hooks.hh>
00028
00029 namespace wpl
00030 {
00031
00032 namespace wifi
00033 {
00034
00035 template <class HeaderType, class S>
00036 boost::optional<seq_bss_tmp_id>
00037 unique_id_factory<seq_bss_tmp_id>::
00038 build(const pkt::packet<S>& p, addr_mapping& mapping)
00039 {
00040 WP_UNIQUE_ID_DISSECT(p, d, internals::id_helper_hooks, h);
00041
00042 const timestamp* t = h.timestamp_ptr();
00043 const addr* a = h.addr_ptr(mgt::header::bssid);
00044 const uint16_t* s = h.seq_ctl_ptr();
00045
00046 assert(not t or (a and s));
00047 if (t)
00048 return seq_bss_tmp_id (p.id(), *s, mapping[*a], *t);
00049 else
00050 return boost::none_t ();
00051 }
00052
00053 }
00054
00055 }
00056
00057 #endif // ! WIFI_SEQCTL_BSSID_TIMESTAMP_ID_HXX_
00058