int mevent_app_init(eapd_wksp_t *nwksp) { int reuse = 1; eapd_mevent_t *mevent; eapd_cb_t *cb; struct sockaddr_in addr; if (nwksp == NULL) return -1; mevent = &nwksp->mevent; mevent->appSocket = -1; cb = mevent->cb; if (cb == NULL) { EAPD_INFO("No any mevent application need to run.\n"); return 0; } while (cb) { EAPD_INFO("mevent: init brcm interface %s \n", cb->ifname); cb->brcmSocket = eapd_add_brcm(nwksp, cb->ifname); if (!cb->brcmSocket) return -1; /* set this brcmSocket have MEVENT capability */ cb->brcmSocket->flag |= EAPD_CAP_MEVENT; cb = cb->next; } /* appSocket for mevent */ mevent->appSocket = socket(AF_INET, SOCK_DGRAM, 0); if (mevent->appSocket < 0) { EAPD_ERROR("UDP Open failed.\n"); return -1; } #if defined(__ECOS) if (setsockopt(mevent->appSocket, SOL_SOCKET, SO_REUSEPORT, (char*)&reuse, sizeof(reuse)) < 0) { EAPD_ERROR("UDP setsockopt failed.\n"); close(mevent->appSocket); mevent->appSocket = -1; return -1; } #else if (setsockopt(mevent->appSocket, SOL_SOCKET, SO_REUSEADDR, (char*)&reuse, sizeof(reuse)) < 0) { EAPD_ERROR("UDP setsockopt failed.\n"); close(mevent->appSocket); mevent->appSocket = -1; return -1; } #endif /* __ECOS */ memset(&addr, 0, sizeof(struct sockaddr_in)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; addr.sin_port = htons(EAPD_WKSP_MEVENT_UDP_RPORT); if (bind(mevent->appSocket, (struct sockaddr *)&addr, sizeof(addr)) < 0) { EAPD_ERROR("UDP Bind failed, close mevent appSocket %d\n", mevent->appSocket); close(mevent->appSocket); mevent->appSocket = -1; return -1; } EAPD_INFO("MEVENT appSocket %d opened\n", mevent->appSocket); return 0; }
int dcs_app_init(eapd_wksp_t *nwksp) { int reuse = 1; eapd_dcs_t *dcs; eapd_cb_t *cb; struct sockaddr_in addr; if (nwksp == NULL) return -1; dcs = &nwksp->dcs; dcs->appSocket = -1; cb = dcs->cb; if (cb == NULL) { EAPD_INFO("No any DCS application need to run.\n"); return 0; } while (cb) { EAPD_INFO("dcs: init brcm interface %s \n", cb->ifname); cb->brcmSocket = eapd_add_brcm(nwksp, cb->ifname); if (!cb->brcmSocket) return -1; /* set this brcmSocket have DCS capability */ cb->brcmSocket->flag |= EAPD_CAP_DCS; cb = cb->next; } /* appSocket for dcs */ dcs->appSocket = socket(AF_INET, SOCK_DGRAM, 0); if (dcs->appSocket < 0) { EAPD_ERROR("UDP Open failed.\n"); return -1; } #if defined(__ECOS) if (setsockopt(dcs->appSocket, SOL_SOCKET, SO_REUSEPORT, (char*)&reuse, sizeof(reuse)) < 0) { EAPD_ERROR("UDP setsockopt failed.\n"); close(dcs->appSocket); dcs->appSocket = -1; return -1; } #else if (setsockopt(dcs->appSocket, SOL_SOCKET, SO_REUSEADDR, (char*)&reuse, sizeof(reuse)) < 0) { EAPD_ERROR("UDP setsockopt failed.\n"); close(dcs->appSocket); dcs->appSocket = -1; return -1; } #endif memset(&addr, 0, sizeof(struct sockaddr_in)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; addr.sin_port = htons(EAPD_WKSP_DCS_UDP_RPORT); if (bind(dcs->appSocket, (struct sockaddr *)&addr, sizeof(addr)) < 0) { EAPD_ERROR("UDP Bind failed, close dcs appSocket %d\n", dcs->appSocket); close(dcs->appSocket); dcs->appSocket = -1; return -1; } EAPD_INFO("DCS appSocket %d opened\n", dcs->appSocket); return 0; }