mirror of https://github.com/F-Stack/f-stack.git
fix some issue.
This commit is contained in:
parent
ff8fd2bdc7
commit
f7da542ada
|
@ -89,11 +89,6 @@ addr=192.168.1.2
|
||||||
netmask=255.255.255.0
|
netmask=255.255.255.0
|
||||||
broadcast=192.168.1.255
|
broadcast=192.168.1.255
|
||||||
gateway=192.168.1.1
|
gateway=192.168.1.1
|
||||||
# IPv6 net addr
|
|
||||||
# Optional parameters
|
|
||||||
#addr6=ff::02
|
|
||||||
#prefix_len=64
|
|
||||||
#gateway6=ff::01
|
|
||||||
# set interface name, Optional parameter.
|
# set interface name, Optional parameter.
|
||||||
#if_name=eno7
|
#if_name=eno7
|
||||||
|
|
||||||
|
|
|
@ -74,16 +74,13 @@ struct ff_port_cfg {
|
||||||
char *addr6_str;
|
char *addr6_str;
|
||||||
char *gateway6_str;
|
char *gateway6_str;
|
||||||
uint8_t prefix_len;
|
uint8_t prefix_len;
|
||||||
|
|
||||||
char *vip_addr6_str;
|
char *vip_addr6_str;
|
||||||
char **vip_addr6_array;
|
char **vip_addr6_array;
|
||||||
uint32_t nb_vip6;
|
uint32_t nb_vip6;
|
||||||
uint8_t vip_prefix_len;
|
uint8_t vip_prefix_len;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char *pcap;
|
|
||||||
uint16_t snaplen;
|
|
||||||
uint32_t savelen;
|
|
||||||
|
|
||||||
int nb_lcores;
|
int nb_lcores;
|
||||||
int nb_slaves;
|
int nb_slaves;
|
||||||
uint16_t lcore_list[DPDK_MAX_LCORE];
|
uint16_t lcore_list[DPDK_MAX_LCORE];
|
||||||
|
|
|
@ -83,7 +83,7 @@ int lo_set_defaultaddr(void)
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
IFNET_WLOCK();
|
IFNET_WLOCK();
|
||||||
TAILQ_FOREACH(ifp, &V_ifnet, if_link)
|
CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link)
|
||||||
if ( (ifp->if_flags & IFF_LOOPBACK) != 0 )
|
if ( (ifp->if_flags & IFF_LOOPBACK) != 0 )
|
||||||
break;
|
break;
|
||||||
IFNET_WUNLOCK();
|
IFNET_WUNLOCK();
|
||||||
|
|
|
@ -926,13 +926,10 @@ ff_recvmsg(int s, struct msghdr *msg, int flags)
|
||||||
freebsd2linux_sockaddr(linux_msg->msg_name, msg->msg_name);
|
freebsd2linux_sockaddr(linux_msg->msg_name, msg->msg_name);
|
||||||
linux_msg->msg_flags = msg->msg_flags;
|
linux_msg->msg_flags = msg->msg_flags;
|
||||||
msg->msg_flags = 0;
|
msg->msg_flags = 0;
|
||||||
<<<<<<< HEAD
|
|
||||||
=======
|
|
||||||
|
|
||||||
if(msg->msg_control) {
|
if(msg->msg_control) {
|
||||||
freebsd2linux_cmsghdr(linux_msg);
|
freebsd2linux_cmsghdr(linux_msg);
|
||||||
}
|
}
|
||||||
>>>>>>> dev
|
|
||||||
|
|
||||||
return (rc);
|
return (rc);
|
||||||
kern_fail:
|
kern_fail:
|
||||||
|
|
110
lib/ff_veth.c
110
lib/ff_veth.c
|
@ -300,65 +300,6 @@ ff_zc_mbuf_read(struct ff_zc_mbuf *m, const char *data, int len)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ff_zc_mbuf_get(struct ff_zc_mbuf *m, int len) {
|
|
||||||
struct mbuf *mb;
|
|
||||||
|
|
||||||
if (m == NULL) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
mb = m_getm2(NULL, max(len, 1), M_WAITOK, MT_DATA, 0);
|
|
||||||
if (mb == NULL) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
m->bsd_mbuf = m->bsd_mbuf_off = mb;
|
|
||||||
m->off = 0;
|
|
||||||
m->len = len;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
ff_zc_mbuf_write(struct ff_zc_mbuf *zm, const char *data, int len)
|
|
||||||
{
|
|
||||||
int ret, length, progress = 0;
|
|
||||||
struct mbuf *m, *mb;
|
|
||||||
|
|
||||||
if (zm == NULL) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
m = (struct mbuf *)zm->bsd_mbuf_off;
|
|
||||||
|
|
||||||
if (zm->off + len > zm->len) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (mb = m; mb != NULL; mb = mb->m_next) {
|
|
||||||
length = min(M_TRAILINGSPACE(mb), len - progress);
|
|
||||||
bcopy(data + progress, mtod(mb, char *) + mb->m_len, length);
|
|
||||||
|
|
||||||
mb->m_len += length;
|
|
||||||
progress += length;
|
|
||||||
if (len == progress) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
//if (flags & M_PKTHDR)
|
|
||||||
// m->m_pkthdr.len += length;
|
|
||||||
}
|
|
||||||
zm->off += len;
|
|
||||||
zm->bsd_mbuf_off = mb;
|
|
||||||
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
ff_zc_mbuf_read(struct ff_zc_mbuf *m, const char *data, int len)
|
|
||||||
{
|
|
||||||
// DOTO: Support read zero copy
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *
|
void *
|
||||||
ff_mbuf_gethdr(void *pkt, uint16_t total, void *data,
|
ff_mbuf_gethdr(void *pkt, uint16_t total, void *data,
|
||||||
uint16_t len, uint8_t rx_csum)
|
uint16_t len, uint8_t rx_csum)
|
||||||
|
@ -496,57 +437,6 @@ ff_veth_set_gateway(struct ff_veth_softc *sc)
|
||||||
return rib_action(RT_DEFAULT_FIB, RTM_ADD, &info, &rci);
|
return rib_action(RT_DEFAULT_FIB, RTM_ADD, &info, &rci);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef INET6
|
|
||||||
static int
|
|
||||||
ff_veth_setaddr6(struct ff_veth_softc *sc)
|
|
||||||
{
|
|
||||||
struct in6_aliasreq ifr6;
|
|
||||||
bzero(&ifr6, sizeof(ifr6));
|
|
||||||
strcpy(ifr6.ifra_name, sc->ifp->if_dname);
|
|
||||||
|
|
||||||
ifr6.ifra_addr.sin6_len = sizeof ifr6.ifra_addr;
|
|
||||||
ifr6.ifra_addr.sin6_family = AF_INET6;
|
|
||||||
ifr6.ifra_addr.sin6_addr = sc->ip6;
|
|
||||||
|
|
||||||
ifr6.ifra_prefixmask.sin6_len = sizeof ifr6.ifra_prefixmask;
|
|
||||||
memset(&ifr6.ifra_prefixmask.sin6_addr, 0xff, sc->prefix_length / 8);
|
|
||||||
uint8_t mask_size_mod = sc->prefix_length % 8;
|
|
||||||
if (mask_size_mod)
|
|
||||||
{
|
|
||||||
ifr6.ifra_prefixmask.sin6_addr.__u6_addr.__u6_addr8[sc->prefix_length / 8] = ((1 << mask_size_mod) - 1) << (8 - mask_size_mod);
|
|
||||||
}
|
|
||||||
|
|
||||||
ifr6.ifra_lifetime.ia6t_pltime = ifr6.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME;
|
|
||||||
|
|
||||||
struct socket *so = NULL;
|
|
||||||
socreate(AF_INET6, &so, SOCK_DGRAM, 0, curthread->td_ucred, curthread);
|
|
||||||
int ret = ifioctl(so, SIOCAIFADDR_IN6, (caddr_t)&ifr6, curthread);
|
|
||||||
|
|
||||||
sofree(so);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
ff_veth_set_gateway6(struct ff_veth_softc *sc)
|
|
||||||
{
|
|
||||||
struct sockaddr_in6 gw, dst, nm;
|
|
||||||
|
|
||||||
bzero(&gw, sizeof(gw));
|
|
||||||
bzero(&dst, sizeof(dst));
|
|
||||||
bzero(&nm, sizeof(nm));
|
|
||||||
|
|
||||||
gw.sin6_len = dst.sin6_len = nm.sin6_len = sizeof(struct sockaddr_in6);
|
|
||||||
gw.sin6_family = dst.sin6_family = AF_INET6;
|
|
||||||
|
|
||||||
gw.sin6_addr = sc->gateway6;
|
|
||||||
//dst.sin6_addr = nm.sin6_addr = 0;
|
|
||||||
|
|
||||||
return rtrequest_fib(RTM_ADD, (struct sockaddr *)&dst, (struct sockaddr *)&gw,
|
|
||||||
(struct sockaddr *)&nm, RTF_GATEWAY, NULL, RT_DEFAULT_FIB);
|
|
||||||
}
|
|
||||||
#endif /* INET6 */
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ff_veth_setvaddr(struct ff_veth_softc *sc, struct ff_port_cfg *cfg)
|
ff_veth_setvaddr(struct ff_veth_softc *sc, struct ff_port_cfg *cfg)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue