4 #include <fwp_participant.h>
5 #include "fwp_participant_table.h"
7 struct foreach_contract {
8 fwp_participant_t *participant; /**< Current participant */
9 fwp_contract_data_t *contdata; /**< Current contract */
10 fwp_contract_data_t *contdata_new; /**< The contract being negotiated */
13 static inline fwp_contract_data_t *foreach_contract_begin(struct foreach_contract *fec)
16 fec->participant = fwp_participant_table_foreach_begin();
18 if (fec->participant) {
19 fec->contdata= fwp_contract_table_foreach_begin
20 (&fec->participant->contract_table);
24 if (fec->contdata == NULL) {
25 fwp_contract_table_foreach_end(&fec->participant->contract_table);
26 fec->participant = fwp_participant_table_foreach_next(fec->participant);
32 if (fec->contdata == NULL) {
33 fwp_participant_table_foreach_end();
34 fec->contdata = fec->contdata_new;
39 static inline fwp_contract_data_t *foreach_contract_next(struct foreach_contract *fec)
41 if (fec->contdata == fec->contdata_new) {
42 /* This was the last contract */
45 fec->contdata=fwp_contract_table_foreach_next(&fec->participant->contract_table,
48 if (fec->contdata == NULL) {
49 fwp_contract_table_foreach_end(&fec->participant->contract_table);
50 fec->participant = fwp_participant_table_foreach_next(fec->participant);
51 if (fec->participant == NULL) {
54 fec->contdata= fwp_contract_table_foreach_begin(
55 &fec->participant->contract_table);
61 if (fec->contdata == NULL) {
62 fwp_participant_table_foreach_end();
63 fec->contdata = fec->contdata_new;