addrconf.c (0612ec48762bf8712db1925b2e67246d2237ebab) | addrconf.c (c71099acce933455123ee505cc75964610a209ad) |
---|---|
1/* 2 * IPv6 Address [auto]configuration 3 * Linux INET6 implementation 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> 8 * --- 1511 unchanged lines hidden (view full) --- 1520 1521 /* Prevent useless cloning on PtP SIT. 1522 This thing is done here expecting that the whole 1523 class of non-broadcast devices need not cloning. 1524 */ 1525 if (dev->type == ARPHRD_SIT && (dev->flags&IFF_POINTOPOINT)) 1526 rtmsg.rtmsg_flags |= RTF_NONEXTHOP; 1527 | 1/* 2 * IPv6 Address [auto]configuration 3 * Linux INET6 implementation 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> 8 * --- 1511 unchanged lines hidden (view full) --- 1520 1521 /* Prevent useless cloning on PtP SIT. 1522 This thing is done here expecting that the whole 1523 class of non-broadcast devices need not cloning. 1524 */ 1525 if (dev->type == ARPHRD_SIT && (dev->flags&IFF_POINTOPOINT)) 1526 rtmsg.rtmsg_flags |= RTF_NONEXTHOP; 1527 |
1528 ip6_route_add(&rtmsg, NULL, NULL, NULL); | 1528 ip6_route_add(&rtmsg, NULL, NULL, NULL, RT6_TABLE_PREFIX); |
1529} 1530 1531/* Create "default" multicast route to the interface */ 1532 1533static void addrconf_add_mroute(struct net_device *dev) 1534{ 1535 struct in6_rtmsg rtmsg; 1536 1537 memset(&rtmsg, 0, sizeof(rtmsg)); 1538 ipv6_addr_set(&rtmsg.rtmsg_dst, 1539 htonl(0xFF000000), 0, 0, 0); 1540 rtmsg.rtmsg_dst_len = 8; 1541 rtmsg.rtmsg_metric = IP6_RT_PRIO_ADDRCONF; 1542 rtmsg.rtmsg_ifindex = dev->ifindex; 1543 rtmsg.rtmsg_flags = RTF_UP; 1544 rtmsg.rtmsg_type = RTMSG_NEWROUTE; | 1529} 1530 1531/* Create "default" multicast route to the interface */ 1532 1533static void addrconf_add_mroute(struct net_device *dev) 1534{ 1535 struct in6_rtmsg rtmsg; 1536 1537 memset(&rtmsg, 0, sizeof(rtmsg)); 1538 ipv6_addr_set(&rtmsg.rtmsg_dst, 1539 htonl(0xFF000000), 0, 0, 0); 1540 rtmsg.rtmsg_dst_len = 8; 1541 rtmsg.rtmsg_metric = IP6_RT_PRIO_ADDRCONF; 1542 rtmsg.rtmsg_ifindex = dev->ifindex; 1543 rtmsg.rtmsg_flags = RTF_UP; 1544 rtmsg.rtmsg_type = RTMSG_NEWROUTE; |
1545 ip6_route_add(&rtmsg, NULL, NULL, NULL); | 1545 ip6_route_add(&rtmsg, NULL, NULL, NULL, RT6_TABLE_LOCAL); |
1546} 1547 1548static void sit_route_add(struct net_device *dev) 1549{ 1550 struct in6_rtmsg rtmsg; 1551 1552 memset(&rtmsg, 0, sizeof(rtmsg)); 1553 1554 rtmsg.rtmsg_type = RTMSG_NEWROUTE; 1555 rtmsg.rtmsg_metric = IP6_RT_PRIO_ADDRCONF; 1556 1557 /* prefix length - 96 bits "::d.d.d.d" */ 1558 rtmsg.rtmsg_dst_len = 96; 1559 rtmsg.rtmsg_flags = RTF_UP|RTF_NONEXTHOP; 1560 rtmsg.rtmsg_ifindex = dev->ifindex; 1561 | 1546} 1547 1548static void sit_route_add(struct net_device *dev) 1549{ 1550 struct in6_rtmsg rtmsg; 1551 1552 memset(&rtmsg, 0, sizeof(rtmsg)); 1553 1554 rtmsg.rtmsg_type = RTMSG_NEWROUTE; 1555 rtmsg.rtmsg_metric = IP6_RT_PRIO_ADDRCONF; 1556 1557 /* prefix length - 96 bits "::d.d.d.d" */ 1558 rtmsg.rtmsg_dst_len = 96; 1559 rtmsg.rtmsg_flags = RTF_UP|RTF_NONEXTHOP; 1560 rtmsg.rtmsg_ifindex = dev->ifindex; 1561 |
1562 ip6_route_add(&rtmsg, NULL, NULL, NULL); | 1562 ip6_route_add(&rtmsg, NULL, NULL, NULL, RT6_TABLE_MAIN); |
1563} 1564 1565static void addrconf_add_lroute(struct net_device *dev) 1566{ 1567 struct in6_addr addr; 1568 1569 ipv6_addr_set(&addr, htonl(0xFE800000), 0, 0, 0); 1570 addrconf_prefix_route(&addr, 64, dev, 0, 0); --- 2515 unchanged lines hidden --- | 1563} 1564 1565static void addrconf_add_lroute(struct net_device *dev) 1566{ 1567 struct in6_addr addr; 1568 1569 ipv6_addr_set(&addr, htonl(0xFE800000), 0, 0, 0); 1570 addrconf_prefix_route(&addr, 64, dev, 0, 0); --- 2515 unchanged lines hidden --- |