- if (loa == context->loa_in)
- context->loa_changing = 0;
- else {
- context->loa_changing = 1;
- context->loa_out = loa & 7;
- }
+static inline void *loa2ptr(unsigned loa)
+{
+ return (void*)(intptr_t)loa;
+}
+
+static inline unsigned ptr2loa(void *ptr)
+{
+ return (unsigned)(intptr_t)ptr;
+}
+
+int afb_context_change_loa(struct afb_context *context, unsigned loa)
+{
+ if (!context->validated || loa > 7)
+ return 0;
+
+ return 0 <= afb_session_set_cookie(context->session, loa_key(context), loa2ptr(loa), NULL);
+}
+
+unsigned afb_context_get_loa(struct afb_context *context)
+{
+ assert(context->session != NULL);
+ return ptr2loa(afb_session_get_cookie(context->session, loa_key(context)));