- adj_delegate_t *delegate;
- vec_foreach(delegate, adj->ia_delegates) {
- if (ad_vfts[delegate->ad_type].adv_last_lock)
- ad_vfts[delegate->ad_type].adv_last_lock(adj, delegate);
+ adj_delegate_t *aed;
+
+ vec_foreach(aed, adj->ia_delegates)
+ {
+ if (ad_vfts[aed->ad_type].adv_adj_modified)
+ {
+ ad_vfts[aed->ad_type].adv_adj_modified(aed);
+ }
+ }
+}
+
+void
+adj_delegate_adj_deleted (ip_adjacency_t *adj)
+{
+ adj_delegate_t *aed;
+
+ vec_foreach(aed, adj->ia_delegates)
+ {
+ if (ad_vfts[aed->ad_type].adv_adj_deleted)
+ {
+ ad_vfts[aed->ad_type].adv_adj_deleted(aed);
+ }
+ }
+
+ vec_reset_length(adj->ia_delegates);
+}
+
+void
+adj_delegate_adj_created (ip_adjacency_t *adj)
+{
+ adj_delegate_vft_t *vft;
+
+ vec_foreach(vft, ad_vfts)
+ {
+ if (vft->adv_adj_created)
+ {
+ vft->adv_adj_created(adj_get_index(adj));
+ }