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 ---