summaryrefslogtreecommitdiff
path: root/cesar
diff options
context:
space:
mode:
authorlaranjeiro2010-06-04 07:46:57 +0000
committerlaranjeiro2010-06-04 07:46:57 +0000
commite4b716cfbbdbe47e3a356a97e47a871964fbac8c (patch)
tree92f575f75a101190c52a821b03f5e1f58f24aac9 /cesar
parent564256957719dc97083ebac1c665e26d490f3243 (diff)
cesar/bsu: add a function to update discover info bentry for bsu
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@7170 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar')
-rw-r--r--cesar/bsu/bsu.h7
-rw-r--r--cesar/bsu/src/bsu.c13
-rw-r--r--cesar/bsu/test/utest/src/bsut.c26
3 files changed, 46 insertions, 0 deletions
diff --git a/cesar/bsu/bsu.h b/cesar/bsu/bsu.h
index 35c0b5fd05..d62a49bf8f 100644
--- a/cesar/bsu/bsu.h
+++ b/cesar/bsu/bsu.h
@@ -153,6 +153,13 @@ bsu_nek_index_current (void);
uint
bsu_nek_index_next (void);
+/**
+ * Update discover info beacon entry.
+ * \param discover the discover info beacon entry.
+ */
+void
+bsu_update_discover_info (bsu_beacon_bmi_discover_info_t *discover);
+
END_DECLS
#endif /* bsu_bsu_h */
diff --git a/cesar/bsu/src/bsu.c b/cesar/bsu/src/bsu.c
index ab3e168522..fb2508cc66 100644
--- a/cesar/bsu/src/bsu.c
+++ b/cesar/bsu/src/bsu.c
@@ -752,6 +752,9 @@ bsu_update (bsu_beacon_t *beacon, bsu_update_sta_type_t is_sta)
&& !ctx->beacon.bmis.mac_address_present.present)
ctx->beacon.bmis.mac_address_present =
beacon->bmis.mac_address_present;
+ if (beacon->bmis.discover_info.present)
+ ctx->beacon.bmis.discover_info =
+ beacon->bmis.discover_info;
}
bsu_update_sta_avln_schedules (ctx);
arch_dsr_unlock ();
@@ -851,3 +854,13 @@ bsu_nek_index_next (void)
ctx->sta_avln->bs.schedules.nek_switch[BSU_BEACON_SCHEDULES_MAX-1];
return (index_max + 1) % MAC_NEK_INDEX_NB;
}
+
+void
+bsu_update_discover_info (bsu_beacon_bmi_discover_info_t *discover)
+{
+ bsu_t *ctx = &bsu_global;
+ dbg_assert (discover);
+ arch_dsr_lock ();
+ ctx->beacon.bmis.discover_info = *discover;
+ arch_dsr_unlock ();
+}
diff --git a/cesar/bsu/test/utest/src/bsut.c b/cesar/bsu/test/utest/src/bsut.c
index a1f3ea652b..7e81f31dd9 100644
--- a/cesar/bsu/test/utest/src/bsut.c
+++ b/cesar/bsu/test/utest/src/bsut.c
@@ -677,6 +677,31 @@ test_case_bsu_nek_index (test_t test)
bsu_test_uninit (&t);
}
+
+void
+test_case_bsu_discover_update (test_t test)
+{
+ test_case_begin (test, "Update discover info beacon entry");
+ test_begin (test, "update")
+ {
+ bsu_test_t t;
+ bsu_test_init (&t);
+ bsu_beacon_t beacon;
+ bsu_test_create_beacon (&t, &beacon);
+ memset (&t.bsu->beacon.bmis.discover_info, 0,
+ sizeof (bsu_beacon_bmi_discover_info_t));
+ test_fail_unless (memcmp (&beacon.bmis.discover_info,
+ &t.bsu->beacon.bmis.discover_info,
+ sizeof (bsu_beacon_bmi_discover_info_t)) != 0);
+ bsu_update_discover_info (&beacon.bmis.discover_info);
+ test_fail_unless (memcmp (&beacon.bmis.discover_info,
+ &t.bsu->beacon.bmis.discover_info,
+ sizeof (bsu_beacon_bmi_discover_info_t)) == 0);
+ bsu_test_uninit (&t);
+ }
+ test_end;
+}
+
void
test_suite_bsu (test_t t)
{
@@ -689,4 +714,5 @@ test_suite_bsu (test_t t)
test_case_bsu_timer_event (t);
test_case_bsu_persistent_schedules_update (t);
test_case_bsu_nek_index (t);
+ test_case_bsu_discover_update (t);
}