/** * Call pppol2tp_create() inside the tcpip_thread context. */ static void pppapi_do_pppol2tp_create(struct pppapi_msg_msg *msg) { msg->ppp = pppol2tp_create(msg->msg.l2tpcreate.pppif, msg->msg.l2tpcreate.netif, msg->msg.l2tpcreate.ipaddr, msg->msg.l2tpcreate.port, #if PPPOL2TP_AUTH_SUPPORT msg->msg.l2tpcreate.secret, msg->msg.l2tpcreate.secret_len, #else /* PPPOL2TP_AUTH_SUPPORT */ NULL, #endif /* PPPOL2TP_AUTH_SUPPORT */ msg->msg.l2tpcreate.link_status_cb, msg->msg.l2tpcreate.ctx_cb); TCPIP_PPPAPI_ACK(msg); }
/** * Call pppol2tp_create() inside the tcpip_thread context. */ static err_t pppapi_do_pppol2tp_create(struct tcpip_api_call_data *m) { /* cast through void* to silence alignment warnings. * We know it works because the structs have been instantiated as struct pppapi_msg */ struct pppapi_msg *msg = (struct pppapi_msg *)(void*)m; msg->msg.ppp = pppol2tp_create(msg->msg.msg.l2tpcreate.pppif, msg->msg.msg.l2tpcreate.netif, API_EXPR_REF(msg->msg.msg.l2tpcreate.ipaddr), msg->msg.msg.l2tpcreate.port, #if PPPOL2TP_AUTH_SUPPORT msg->msg.msg.l2tpcreate.secret, msg->msg.msg.l2tpcreate.secret_len, #else /* PPPOL2TP_AUTH_SUPPORT */ NULL, 0, #endif /* PPPOL2TP_AUTH_SUPPORT */ msg->msg.msg.l2tpcreate.link_status_cb, msg->msg.msg.l2tpcreate.ctx_cb); return ERR_OK; }