一文解析LINUX中的socket與VRF

下面由linux系統(tǒng)教程欄目給大家介紹linux中的socket與vrf,希望對(duì)需要的朋友有所幫助!

linux socket與VRF

linux系統(tǒng)教程
一文解析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] = '

久久精品国产精品国产精品污|
久久亚洲精品人成综合网|
久久综合丝袜日本网|
狠色狠色狠狠色综合久久|
久久久久噜噜噜亚洲熟女综合|
色偷偷88欧美精品久久久
|
青青热久久国产久精品
|
97久久婷婷五月综合色d啪蜜芽|
久久伊人五月丁香狠狠色|
国产欧美久久久精品|
一日本道伊人久久综合影|
久久99国产精品久久久|
伊人久久成人成综合网222|
久久久久久久久无码精品亚洲日韩
|
熟妇人妻久久中文字幕|
久久99国产一区二区三区|
国产69精品久久久久APP下载|
国产一级持黄大片99久久|
亚洲色欲久久久综合网|
日本精品久久久久影院日本|
久久九九全国免费|
久久久久久午夜成人影院|
18岁日韩内射颜射午夜久久成人|
成人午夜精品久久久久久久小说|
久久亚洲AV成人无码电影|
久久九九兔免费精品6|
亚洲欧美国产精品专区久久|
狠狠人妻久久久久久综合|
伊人色综合久久|
久久综合中文字幕|
国产成人精品综合久久久|
久久综合久久综合久久综合|
久久精品中文字幕久久|
久久精品国产99国产电影网
|
欧美午夜精品久久久久久浪潮|
99久久人妻无码精品系列蜜桃|
午夜精品久久久久久中宇|
久久综合精品国产二区无码|
久久精品午夜一区二区福利|
国内精品久久久久影院一蜜桃|
国内精品久久国产大陆|