下面由linux系統(tǒng)教程欄目給大家介紹linux中的socket與vrf,希望對(duì)需要的朋友有所幫助!
linux socket與VRF
#!/bin/bash sudo ip netns add ns1 sudo ip link add ns1veth1 type veth peer name eth0 netns ns1 sudo ip netns add ns2 sudo ip link add ns2veth1 type veth peer name eth0 netns ns2 sudo ip link set ns1veth1 master vrftest sudo ip link set ns2veth1 master vrftest sudo ip link set ns2veth1 up sudo ip link set ns1veth1 up sudo ip addr add 1.1.1.254/24 dev ns1veth1 sudo ip addr add 2.2.2.254/24 dev ns2veth1 sudo ip netns exec ns2 ip addr add 2.2.2.1/24 dev eth0 sudo ip netns exec ns1 ip addr add 1.1.1.1/24 dev eth0 sudo ip netns exec ns1 ip link set eth0 up sudo ip netns exec ns1 ip link set lo up sudo ip netns exec ns1 ip route add default via 1.1.1.254 dev eth0 sudo ip netns exec ns2 ip link set eth0 up sudo ip netns exec ns2 ip link set lo up sudo ip netns exec ns2 ip route add default via 2.2.2.254 dev eth0
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<errno.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include <unistd.h> #define MAXLINE 4096 int main(int argc, char** argv) { int listenfd, connfd; struct sockaddr_in servaddr; char buff[4096]; int n; int on = 1; if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1 ){ printf("create socket error: %s(errno: %d)n",strerror(errno),errno); exit(0); } setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, (void *)&on, sizeof(on)); setsockopt(listenfd, SOL_SOCKET, SO_REUSEPORT, (void *)&on, sizeof(on)); memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(6666); if(argc == 2){ printf("vrf device name: %srn", argv[1]); if(0 > setsockopt(listenfd, SOL_SOCKET, SO_BINDTODEVICE, argv[1], strlen(argv[1])+1)){ printf("bind socket master dev error: %s(errno: %d)n",strerror(errno),errno); exit(0); } } if( bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1){ printf("bind socket error: %s(errno: %d)n",strerror(errno),errno); exit(0); } if( listen(listenfd, 10) == -1){ printf("listen socket error: %s(errno: %d)n",strerror(errno),errno); exit(0); } printf("======waiting for client's request======n"); while(1){ if((connfd = accept(listenfd, (struct sockaddr*)NULL, NULL)) == -1){ printf("accept socket error: %s(errno: %d)",strerror(errno),errno); continue; } n = recv(connfd, buff, MAXLINE, 0); buff[n] = ' 狠狠色丁香婷综合久久| 9久久9久久精品| 青青草国产97免久久费观看| 久久夜色tv网站| 色综合久久久久综合99| 思思久久精品在热线热| 久久午夜无码鲁丝片| 99久久精品九九亚洲精品| 亚洲日本久久久午夜精品| 久久综合给久久狠狠97色| 久久播电影网| 99久久99久久精品免费看蜜桃| 久久久久久久久久免免费精品 | 久久久久国产精品熟女影院 | 99久久精品无码一区二区毛片| 欧美日韩成人精品久久久免费看| 色综合久久中文字幕无码| 国产精品青草久久久久福利99 | 7777久久久国产精品消防器材| 一本大道加勒比久久综合| 午夜欧美精品久久久久久久| 久久久久亚洲AV成人网人人网站| 久久国产精品成人片免费| 久久久久久久91精品免费观看| 久久久久久综合一区中文字幕| 热re99久久精品国99热| 婷婷久久五月天| 无码任你躁久久久久久久| 国产激情久久久久影院| 久久久久久久99精品免费观看| 久久久久亚洲AV无码网站| 一本色道久久HEZYO无码| 精品伊人久久大线蕉色首页| 日日狠狠久久偷偷色综合0| 久久精品国产色蜜蜜麻豆| 亚洲国产二区三区久久| 欧美亚洲另类久久综合| 99久久精品国产综合一区| 中文字幕一区二区三区久久网站| 精品久久久久久久久中文字幕| 99国产精品久久|