| 232 | } |
| 233 | |
| 234 | int main(int argc, char * argv[]) |
| 235 | { |
| 236 | ff_init(argc, argv); |
| 237 | |
| 238 | assert((kq = ff_kqueue()) > 0); |
| 239 | |
| 240 | sockfd = ff_socket(AF_INET, SOCK_STREAM, 0); |
| 241 | if (sockfd < 0) { |
| 242 | ff_log(FF_LOG_ERR, FF_LOGTYPE_FSTACK_APP, "ff_socket failed, sockfd:%d, errno:%d, %s\n", sockfd, errno, strerror(errno)); |
| 243 | exit(1); |
| 244 | } |
| 245 | |
| 246 | struct sockaddr_in my_addr; |
| 247 | bzero(&my_addr, sizeof(my_addr)); |
| 248 | my_addr.sin_family = AF_INET; |
| 249 | my_addr.sin_port = htons(80); |
| 250 | my_addr.sin_addr.s_addr = htonl(INADDR_ANY); |
| 251 | |
| 252 | int ret = ff_bind(sockfd, (struct linux_sockaddr *)&my_addr, sizeof(my_addr)); |
| 253 | if (ret < 0) { |
| 254 | ff_log(FF_LOG_ERR, FF_LOGTYPE_FSTACK_APP, "ff_bind failed, sockfd:%d, errno:%d, %s\n", sockfd, errno, strerror(errno)); |
| 255 | exit(1); |
| 256 | } |
| 257 | |
| 258 | ret = ff_listen(sockfd, MAX_EVENTS); |
| 259 | if (ret < 0) { |
| 260 | ff_log(FF_LOG_ERR, FF_LOGTYPE_FSTACK_APP, "ff_listen failed, sockfd:%d, errno:%d, %s\n", sockfd, errno, strerror(errno)); |
| 261 | exit(1); |
| 262 | } |
| 263 | |
| 264 | EV_SET(&kevSet, sockfd, EVFILT_READ, EV_ADD, 0, MAX_EVENTS, NULL); |
| 265 | /* Update kqueue */ |
| 266 | ff_kevent(kq, &kevSet, 1, NULL, 0, NULL); |
| 267 | |
| 268 | #ifdef INET6 |
| 269 | sockfd6 = ff_socket(AF_INET6, SOCK_STREAM, 0); |
| 270 | if (sockfd6 < 0) { |
| 271 | ff_log(FF_LOG_ERR, FF_LOGTYPE_FSTACK_APP, "ff_socket failed, sockfd6:%d, errno:%d, %s\n", sockfd6, errno, strerror(errno)); |
| 272 | exit(1); |
| 273 | } |
| 274 | |
| 275 | struct sockaddr_in6 my_addr6; |
| 276 | bzero(&my_addr6, sizeof(my_addr6)); |
| 277 | my_addr6.sin6_family = AF_INET6; |
| 278 | my_addr6.sin6_port = htons(80); |
| 279 | my_addr6.sin6_addr = in6addr_any; |
| 280 | |
| 281 | ret = ff_bind(sockfd6, (struct linux_sockaddr *)&my_addr6, sizeof(my_addr6)); |
| 282 | if (ret < 0) { |
| 283 | ff_log(FF_LOG_ERR, FF_LOGTYPE_FSTACK_APP, "ff_bind failed, sockfd6:%d, errno:%d, %s\n", sockfd6, errno, strerror(errno)); |
| 284 | exit(1); |
| 285 | } |
| 286 | |
| 287 | ret = ff_listen(sockfd6, MAX_EVENTS); |
| 288 | if (ret < 0) { |
| 289 | ff_log(FF_LOG_ERR, FF_LOGTYPE_FSTACK_APP, "ff_listen failed, sockfd6:%d, errno:%d, %s\n", sockfd6, errno, strerror(errno)); |
| 290 | exit(1); |
| 291 | } |