recursively free all AVPs, including grouped ones */
| 2226 | |
| 2227 | /* recursively free all AVPs, including grouped ones */ |
| 2228 | static void dm_free_avps(struct list_head *avps) |
| 2229 | { |
| 2230 | struct list_head *it, *aux; |
| 2231 | struct dm_avp *avp; |
| 2232 | |
| 2233 | list_for_each_safe (it, aux, avps) { |
| 2234 | avp = list_entry(it, struct dm_avp, list); |
| 2235 | |
| 2236 | if (avp->value_type == AAA_TYPE_GROUPED) |
| 2237 | dm_free_avps(&avp->subavps); |
| 2238 | |
| 2239 | shm_free(avp); |
| 2240 | } |
| 2241 | } |
| 2242 | |
| 2243 | |
| 2244 | void _dm_destroy_message(aaa_message *msg) |
no test coverage detected