)]}'
{
  "log": [
    {
      "commit": "889cd83cbe411dda854429f3223ab2d31a860a4a",
      "tree": "8ee5193215dd00cb3209adf0e441938275e0b670",
      "parents": [
        "3feda6b46f734704840685a62b645cbe4efb810c"
      ],
      "author": {
        "name": "Yuval Mintz",
        "email": "yuvalm@mellanox.com",
        "time": "Wed Feb 28 23:29:38 2018 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 01 13:13:23 2018 -0500"
      },
      "message": "ip6mr: Remove MFC_NOTIFY and refactor flags\n\nMFC_NOTIFY exists in ip6mr, probably as some legacy code\n[was already removed for ipmr in commit\n06bd6c0370bb (\"net: ipmr: remove unused MFC_NOTIFY flag and make the flags enum\").\nRemove it from ip6mr as well, and move the enum into a common file;\nNotice MFC_OFFLOAD is currently only used by ipmr.\n\nSigned-off-by: Yuval Mintz \u003cyuvalm@mellanox.com\u003e\nAcked-by: Nikolay Aleksandrov \u003cnikolay@cumulusnetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "494fff56379c4ad5b8fe36a5b7ffede4044ca7bb",
      "tree": "700668965ff3ae706986235f91bb8c5267017617",
      "parents": [
        "0bbbf0e7d0e7ea8267836986346a9b3a35b74e4e"
      ],
      "author": {
        "name": "Yuval Mintz",
        "email": "yuvalm@mellanox.com",
        "time": "Wed Feb 28 23:29:34 2018 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 01 13:13:23 2018 -0500"
      },
      "message": "ipmr, ip6mr: Make mfc_cache a common structure\n\nmfc_cache and mfc6_cache are almost identical - the main difference is\nin the origin/group addresses and comparison-key. Make a common\nstructure encapsulating most of the multicast routing logic  - mr_mfc\nand convert both ipmr and ip6mr into using it.\n\nFor easy conversion [casting, in this case] mr_mfc has to be the first\nfield inside every multicast routing abstraction utilizing it.\n\nSigned-off-by: Yuval Mintz \u003cyuvalm@mellanox.com\u003e\nAcked-by: Nikolay Aleksandrov \u003cnikolay@cumulusnetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b70432f7319eb75b24ca57dde8146c5e27244780",
      "tree": "d26edbaa559a4aea6ba7583b37732555a8742a3e",
      "parents": [
        "87c418bf1323d57140f4b448715f64de3fbb7e91"
      ],
      "author": {
        "name": "Yuval Mintz",
        "email": "yuvalm@mellanox.com",
        "time": "Wed Feb 28 23:29:32 2018 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 01 13:13:23 2018 -0500"
      },
      "message": "mroute*: Make mr_table a common struct\n\nFollowing previous changes to ip6mr, mr_table and mr6_table are\nbasically the same [up to mr6_table having additional \u00276\u0027 suffixes to\nits variable names].\nMove the common structure definition into a common header; This\nrequires renaming all references in ip6mr to variables that had the\ndistinct suffix.\n\nSigned-off-by: Yuval Mintz \u003cyuvalm@mellanox.com\u003e\nAcked-by: Nikolay Aleksandrov \u003cnikolay@cumulusnetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "87c418bf1323d57140f4b448715f64de3fbb7e91",
      "tree": "012192a6a9b8fbe1901ddb636d0e2b01c1df2679",
      "parents": [
        "8571ab479a6e1ef46ead5ebee567e128a422767c"
      ],
      "author": {
        "name": "Yuval Mintz",
        "email": "yuvalm@mellanox.com",
        "time": "Wed Feb 28 23:29:31 2018 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 01 13:13:23 2018 -0500"
      },
      "message": "ip6mr: Align hash implementation to ipmr\n\nSince commit 8fb472c09b9d (\"ipmr: improve hash scalability\") ipmr has\nbeen using rhashtable as a basis for its mfc routes, but ip6mr is\ncurrently still using the old private MFC hash implementation.\n\nAlign ip6mr to the current ipmr implementation.\n\nSigned-off-by: Yuval Mintz \u003cyuvalm@mellanox.com\u003e\nAcked-by: Nikolay Aleksandrov \u003cnikolay@cumulusnetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8571ab479a6e1ef46ead5ebee567e128a422767c",
      "tree": "3e5db39b21f5835626ad4cad5bde3bc46c6db988",
      "parents": [
        "6853f21f764b04e58df5e44629fec1fb8f3cbf2e"
      ],
      "author": {
        "name": "Yuval Mintz",
        "email": "yuvalm@mellanox.com",
        "time": "Wed Feb 28 23:29:30 2018 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 01 13:13:23 2018 -0500"
      },
      "message": "ip6mr: Make mroute_sk rcu-based\n\nIn ipmr the mr_table socket is handled under RCU. Introduce the same\nfor ip6mr.\n\nSigned-off-by: Yuval Mintz \u003cyuvalm@mellanox.com\u003e\nAcked-by: Nikolay Aleksandrov \u003cnikolay@cumulusnetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6853f21f764b04e58df5e44629fec1fb8f3cbf2e",
      "tree": "c5b3a92c95ed6cf8c262f9c0f4ea92e7ccf3b73d",
      "parents": [
        "a25724b05af0e38232764fc0d0f984254e4b5c41"
      ],
      "author": {
        "name": "Yuval Mintz",
        "email": "yuvalm@mellanox.com",
        "time": "Wed Feb 28 23:29:29 2018 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 01 13:13:23 2018 -0500"
      },
      "message": "ipmr,ipmr6: Define a uniform vif_device\n\nThe two implementations have almost identical structures - vif_device and\nmif_device. As a step toward uniforming the mr_tables, eliminate the\nmif_device and relocate the vif_device definition into a new common\nheader file.\n\nAlso, introduce a common initializing function for setting most of the\nvif_device fields in a new common source file. This requires modifying\nthe ipv{4,6] Kconfig and ipv4 makefile as we\u0027re introducing a new common\nconfig option - CONFIG_IP_MROUTE_COMMON.\n\nSigned-off-by: Yuval Mintz \u003cyuvalm@mellanox.com\u003e\nAcked-by: Nikolay Aleksandrov \u003cnikolay@cumulusnetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b24413180f5600bcb3bb70fbed5cf186b60864bd",
      "tree": "4ebcae0dab27ee8bfcecb9a5daf65353c6dd7ed6",
      "parents": [
        "bb176f67090ca54869fc1262c913aa69d2ede070"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Wed Nov 01 15:07:57 2017 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Thu Nov 02 11:10:55 2017 +0100"
      },
      "message": "License cleanup: add SPDX GPL-2.0 license identifier to files with no license\n\nMany source files in the tree are missing licensing information, which\nmakes it harder for compliance tools to determine the correct license.\n\nBy default all files without license information are under the default\nlicense of the kernel, which is GPL version 2.\n\nUpdate the files which contain no license information with the \u0027GPL-2.0\u0027\nSPDX license identifier.  The SPDX identifier is a legally binding\nshorthand, which can be used instead of the full boiler plate text.\n\nThis patch is based on work done by Thomas Gleixner and Kate Stewart and\nPhilippe Ombredanne.\n\nHow this work was done:\n\nPatches were generated and checked against linux-4.14-rc6 for a subset of\nthe use cases:\n - file had no licensing information it it.\n - file was a */uapi/* one with no licensing information in it,\n - file was a */uapi/* one with existing licensing information,\n\nFurther patches will be generated in subsequent months to fix up cases\nwhere non-standard license headers were used, and references to license\nhad to be inferred by heuristics based on keywords.\n\nThe analysis to determine which SPDX License Identifier to be applied to\na file was done in a spreadsheet of side by side results from of the\noutput of two independent scanners (ScanCode \u0026 Windriver) producing SPDX\ntag:value files created by Philippe Ombredanne.  Philippe prepared the\nbase worksheet, and did an initial spot review of a few 1000 files.\n\nThe 4.13 kernel was the starting point of the analysis with 60,537 files\nassessed.  Kate Stewart did a file by file comparison of the scanner\nresults in the spreadsheet to determine which SPDX license identifier(s)\nto be applied to the file. She confirmed any determination that was not\nimmediately clear with lawyers working with the Linux Foundation.\n\nCriteria used to select files for SPDX license identifier tagging was:\n - Files considered eligible had to be source code files.\n - Make and config files were included as candidates if they contained \u003e5\n   lines of source\n - File already had some variant of a license header in it (even if \u003c5\n   lines).\n\nAll documentation files were explicitly excluded.\n\nThe following heuristics were used to determine which SPDX license\nidentifiers to apply.\n\n - when both scanners couldn\u0027t find any license traces, file was\n   considered to have no license information in it, and the top level\n   COPYING file license applied.\n\n   For non */uapi/* files that summary was:\n\n   SPDX license identifier                            # files\n   ---------------------------------------------------|-------\n   GPL-2.0                                              11139\n\n   and resulted in the first patch in this series.\n\n   If that file was a */uapi/* path one, it was \"GPL-2.0 WITH\n   Linux-syscall-note\" otherwise it was \"GPL-2.0\".  Results of that was:\n\n   SPDX license identifier                            # files\n   ---------------------------------------------------|-------\n   GPL-2.0 WITH Linux-syscall-note                        930\n\n   and resulted in the second patch in this series.\n\n - if a file had some form of licensing information in it, and was one\n   of the */uapi/* ones, it was denoted with the Linux-syscall-note if\n   any GPL family license was found in the file or had no licensing in\n   it (per prior point).  Results summary:\n\n   SPDX license identifier                            # files\n   ---------------------------------------------------|------\n   GPL-2.0 WITH Linux-syscall-note                       270\n   GPL-2.0+ WITH Linux-syscall-note                      169\n   ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause)    21\n   ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)    17\n   LGPL-2.1+ WITH Linux-syscall-note                      15\n   GPL-1.0+ WITH Linux-syscall-note                       14\n   ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause)    5\n   LGPL-2.0+ WITH Linux-syscall-note                       4\n   LGPL-2.1 WITH Linux-syscall-note                        3\n   ((GPL-2.0 WITH Linux-syscall-note) OR MIT)              3\n   ((GPL-2.0 WITH Linux-syscall-note) AND MIT)             1\n\n   and that resulted in the third patch in this series.\n\n - when the two scanners agreed on the detected license(s), that became\n   the concluded license(s).\n\n - when there was disagreement between the two scanners (one detected a\n   license but the other didn\u0027t, or they both detected different\n   licenses) a manual inspection of the file occurred.\n\n - In most cases a manual inspection of the information in the file\n   resulted in a clear resolution of the license that should apply (and\n   which scanner probably needed to revisit its heuristics).\n\n - When it was not immediately clear, the license identifier was\n   confirmed with lawyers working with the Linux Foundation.\n\n - If there was any question as to the appropriate license identifier,\n   the file was flagged for further research and to be revisited later\n   in time.\n\nIn total, over 70 hours of logged manual review was done on the\nspreadsheet to determine the SPDX license identifiers to apply to the\nsource files by Kate, Philippe, Thomas and, in some cases, confirmation\nby lawyers working with the Linux Foundation.\n\nKate also obtained a third independent scan of the 4.13 code base from\nFOSSology, and compared selected files where the other two scanners\ndisagreed against that SPDX file, to see if there was new insights.  The\nWindriver scanner is based on an older version of FOSSology in part, so\nthey are related.\n\nThomas did random spot checks in about 500 files from the spreadsheets\nfor the uapi headers and agreed with SPDX license identifier in the\nfiles he inspected. For the non-uapi files Thomas did random spot checks\nin about 15000 files.\n\nIn initial set of patches against 4.14-rc6, 3 files were found to have\ncopy/paste license identifier errors, and have been fixed to reflect the\ncorrect identifier.\n\nAdditionally Philippe spent 10 hours this week doing a detailed manual\ninspection and review of the 12,461 patched files from the initial patch\nversion early this week with:\n - a full scancode scan run, collecting the matched texts, detected\n   license ids and scores\n - reviewing anything where there was a license detected (about 500+\n   files) to ensure that the applied SPDX license was correct\n - reviewing anything where there was no detection but the patch license\n   was not GPL-2.0 WITH Linux-syscall-note to ensure that the applied\n   SPDX license was correct\n\nThis produced a worksheet with 20 files needing minor correction.  This\nworksheet was then exported into 3 different .csv files for the\ndifferent types of files to be modified.\n\nThese .csv files were then reviewed by Greg.  Thomas wrote a script to\nparse the csv files and add the proper SPDX tag to the file, in the\nformat that the file expected.  This script was further refined by Greg\nbased on the output to detect more types of files automatically and to\ndistinguish between header and source .c files (which need different\ncomment types.)  Finally Greg ran the script using the .csv files to\ngenerate the patches.\n\nReviewed-by: Kate Stewart \u003ckstewart@linuxfoundation.org\u003e\nReviewed-by: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "fd61c6ba313de6758aeeab58fe03bd9fbbc8cea9",
      "tree": "4f0511187c4767663fedcfca5f642d3a719fedf8",
      "parents": [
        "1ce463dd75d4ba0c64191e2b9c73c202a5a6cc3a"
      ],
      "author": {
        "name": "David Ahern",
        "email": "dsa@cumulusnetworks.com",
        "time": "Tue Jan 17 15:51:07 2017 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 18 15:43:59 2017 -0500"
      },
      "message": "net: ipv6: remove nowait arg to rt6_fill_node\n\nAll callers of rt6_fill_node pass 0 for nowait arg. Remove the arg and\nsimplify rt6_fill_node accordingly.\n\nrt6_fill_node passes the nowait of 0 to ip6mr_get_route. Remove the\nnowait arg from it as well.\n\nSigned-off-by: David Ahern \u003cdsa@cumulusnetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2cf750704bb6d7ed8c7d732e071dd1bc890ea5e8",
      "tree": "3af7d034bba1f98d1e5178568f958f31bc606244",
      "parents": [
        "db32e4e49ce2b0e5fcc17803d011a401c0a637f6"
      ],
      "author": {
        "name": "Nikolay Aleksandrov",
        "email": "nikolay@cumulusnetworks.com",
        "time": "Sun Sep 25 23:08:31 2016 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 25 23:41:39 2016 -0400"
      },
      "message": "ipmr, ip6mr: fix scheduling while atomic and a deadlock with ipmr_get_route\n\nSince the commit below the ipmr/ip6mr rtnl_unicast() code uses the portid\ninstead of the previous dst_pid which was copied from in_skb\u0027s portid.\nSince the skb is new the portid is 0 at that point so the packets are sent\nto the kernel and we get scheduling while atomic or a deadlock (depending\non where it happens) by trying to acquire rtnl two times.\nAlso since this is RTM_GETROUTE, it can be triggered by a normal user.\n\nHere\u0027s the sleeping while atomic trace:\n[ 7858.212557] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:620\n[ 7858.212748] in_atomic(): 1, irqs_disabled(): 0, pid: 0, name: swapper/0\n[ 7858.212881] 2 locks held by swapper/0/0:\n[ 7858.213013]  #0:  (((\u0026mrt-\u003eipmr_expire_timer))){+.-...}, at: [\u003cffffffff810fbbf5\u003e] call_timer_fn+0x5/0x350\n[ 7858.213422]  #1:  (mfc_unres_lock){+.....}, at: [\u003cffffffff8161e005\u003e] ipmr_expire_process+0x25/0x130\n[ 7858.213807] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.8.0-rc7+ #179\n[ 7858.213934] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.7.5-20140531_083030-gandalf 04/01/2014\n[ 7858.214108]  0000000000000000 ffff88005b403c50 ffffffff813a7804 0000000000000000\n[ 7858.214412]  ffffffff81a1338e ffff88005b403c78 ffffffff810a4a72 ffffffff81a1338e\n[ 7858.214716]  000000000000026c 0000000000000000 ffff88005b403ca8 ffffffff810a4b9f\n[ 7858.215251] Call Trace:\n[ 7858.215412]  \u003cIRQ\u003e  [\u003cffffffff813a7804\u003e] dump_stack+0x85/0xc1\n[ 7858.215662]  [\u003cffffffff810a4a72\u003e] ___might_sleep+0x192/0x250\n[ 7858.215868]  [\u003cffffffff810a4b9f\u003e] __might_sleep+0x6f/0x100\n[ 7858.216072]  [\u003cffffffff8165bea3\u003e] mutex_lock_nested+0x33/0x4d0\n[ 7858.216279]  [\u003cffffffff815a7a5f\u003e] ? netlink_lookup+0x25f/0x460\n[ 7858.216487]  [\u003cffffffff8157474b\u003e] rtnetlink_rcv+0x1b/0x40\n[ 7858.216687]  [\u003cffffffff815a9a0c\u003e] netlink_unicast+0x19c/0x260\n[ 7858.216900]  [\u003cffffffff81573c70\u003e] rtnl_unicast+0x20/0x30\n[ 7858.217128]  [\u003cffffffff8161cd39\u003e] ipmr_destroy_unres+0xa9/0xf0\n[ 7858.217351]  [\u003cffffffff8161e06f\u003e] ipmr_expire_process+0x8f/0x130\n[ 7858.217581]  [\u003cffffffff8161dfe0\u003e] ? ipmr_net_init+0x180/0x180\n[ 7858.217785]  [\u003cffffffff8161dfe0\u003e] ? ipmr_net_init+0x180/0x180\n[ 7858.217990]  [\u003cffffffff810fbc95\u003e] call_timer_fn+0xa5/0x350\n[ 7858.218192]  [\u003cffffffff810fbbf5\u003e] ? call_timer_fn+0x5/0x350\n[ 7858.218415]  [\u003cffffffff8161dfe0\u003e] ? ipmr_net_init+0x180/0x180\n[ 7858.218656]  [\u003cffffffff810fde10\u003e] run_timer_softirq+0x260/0x640\n[ 7858.218865]  [\u003cffffffff8166379b\u003e] ? __do_softirq+0xbb/0x54f\n[ 7858.219068]  [\u003cffffffff816637c8\u003e] __do_softirq+0xe8/0x54f\n[ 7858.219269]  [\u003cffffffff8107a948\u003e] irq_exit+0xb8/0xc0\n[ 7858.219463]  [\u003cffffffff81663452\u003e] smp_apic_timer_interrupt+0x42/0x50\n[ 7858.219678]  [\u003cffffffff816625bc\u003e] apic_timer_interrupt+0x8c/0xa0\n[ 7858.219897]  \u003cEOI\u003e  [\u003cffffffff81055f16\u003e] ? native_safe_halt+0x6/0x10\n[ 7858.220165]  [\u003cffffffff810d64dd\u003e] ? trace_hardirqs_on+0xd/0x10\n[ 7858.220373]  [\u003cffffffff810298e3\u003e] default_idle+0x23/0x190\n[ 7858.220574]  [\u003cffffffff8102a20f\u003e] arch_cpu_idle+0xf/0x20\n[ 7858.220790]  [\u003cffffffff810c9f8c\u003e] default_idle_call+0x4c/0x60\n[ 7858.221016]  [\u003cffffffff810ca33b\u003e] cpu_startup_entry+0x39b/0x4d0\n[ 7858.221257]  [\u003cffffffff8164f995\u003e] rest_init+0x135/0x140\n[ 7858.221469]  [\u003cffffffff81f83014\u003e] start_kernel+0x50e/0x51b\n[ 7858.221670]  [\u003cffffffff81f82120\u003e] ? early_idt_handler_array+0x120/0x120\n[ 7858.221894]  [\u003cffffffff81f8243f\u003e] x86_64_start_reservations+0x2a/0x2c\n[ 7858.222113]  [\u003cffffffff81f8257c\u003e] x86_64_start_kernel+0x13b/0x14a\n\nFixes: 2942e9005056 (\"[RTNETLINK]: Use rtnl_unicast() for rtnetlink unicasts\")\nSigned-off-by: Nikolay Aleksandrov \u003cnikolay@cumulusnetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "43b9e127406079d187794a5140a2411fbc6df2df",
      "tree": "0950c4475d02bba3959846242e9c0fe5bb758dda",
      "parents": [
        "a5a18bdf7453d505783e40e47ebb84bfdd35f93b"
      ],
      "author": {
        "name": "Nikolay Aleksandrov",
        "email": "nikolay@cumulusnetworks.com",
        "time": "Thu Jul 14 19:28:27 2016 +0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 16 20:19:43 2016 -0700"
      },
      "message": "net: ipmr/ip6mr: add support for keeping an entry age\n\nIn preparation for hardware offloading of ipmr/ip6mr we need an\ninterface that allows to check (and later update) the age of entries.\nRelying on stats alone can show activity but not actual age of the entry,\nfurthermore when there\u0027re tens of thousands of entries a lot of the\nhardware implementations only support \"hit\" bits which are cleared on\nread to denote that the entry was active and shouldn\u0027t be aged out,\nthese can then be naturally translated into age timestamp and will be\ncompatible with the software forwarding age. Using a lastuse entry doesn\u0027t\naffect performance because the members in that cache line are written to\nalong with the age.\nSince all new users are encouraged to use ipmr via netlink, this is\nexported via the RTA_EXPIRES attribute.\nAlso do a minor local variable declaration style adjustment - arrange them\nlongest to shortest.\n\nSigned-off-by: Nikolay Aleksandrov \u003cnikolay@cumulusnetworks.com\u003e\nCC: Roopa Prabhu \u003croopa@cumulusnetworks.com\u003e\nCC: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nCC: Satish Ashok \u003csashok@cumulusnetworks.com\u003e\nCC: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: Alexey Kuznetsov \u003ckuznet@ms2.inr.ac.ru\u003e\nCC: James Morris \u003cjmorris@namei.org\u003e\nCC: Hideaki YOSHIFUJI \u003cyoshfuji@linux-ipv6.org\u003e\nCC: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bbb923a4c2d17ebd5ec34755fe19a33914cbd86f",
      "tree": "f9e3f172e6d157bafa94c3722b4427f90c9c241e",
      "parents": [
        "202dc3fc599c1dded235d3b448d9ca924252e354"
      ],
      "author": {
        "name": "Nicolas Dichtel",
        "email": "nicolas.dichtel@6wind.com",
        "time": "Mon Jan 21 06:00:25 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 21 13:55:14 2013 -0500"
      },
      "message": "mcast: define and use MRT[6]_MAX in ip[6]_mroute_opt()\n\nThis will ease further addition of new MRT[6]_* values and avoid to update\nin6.h each time.\nNote that we reduce the maximum value from 210 to 209, but 210 does not match\nany known value in ip[6]_mroute_setsockopt().\n\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: David L Stevens \u003cdlstevens@us.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "607ca46e97a1b6594b29647d98a32d545c24bdff",
      "tree": "30f4c0784bfddb57332cdc0678bd06d1e77fa185",
      "parents": [
        "08cce05c5a91f5017f4edc9866cf026908c73f9f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Oct 13 10:46:48 2012 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Oct 13 10:46:48 2012 +0100"
      },
      "message": "UAPI: (Scripted) Disintegrate include/linux\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Dave Jones \u003cdavej@redhat.com\u003e\n"
    },
    {
      "commit": "1632b9e2a14ce9f4e08faf6c4380431d63319bd3",
      "tree": "572e45a2de74d233af5d98242bafbd193e074f43",
      "parents": [
        "fdc29805bd7cae133303045fc0249d76f3827613"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Dec 13 15:07:49 2011 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Dec 13 15:07:49 2011 +0000"
      },
      "message": "UAPI: Split trivial #if defined(__KERNEL__) \u0026\u0026 X conditionals\n\nSplit trivial #if defined(__KERNEL__) \u0026\u0026 X conditionals to make automated\ndisintegration easier.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "e2d57766e6744f2956975dd2086d82957187b0f6",
      "tree": "6d7f09ad6eaaac8ad99528cc83894faa6b230b1a",
      "parents": [
        "ca6b8bb097c8e0ab6bce4fa04584074dee17c0d9"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 03 17:59:32 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 03 18:05:29 2011 -0800"
      },
      "message": "net: Provide compat support for SIOCGETMIFCNT_IN6 and SIOCGETSGCNT_IN6.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d1db275dd3f6e4182c4c4b4a1ac6287925d60569",
      "tree": "b8edf6661661ff84785495e2e053ce908417a9ff",
      "parents": [
        "6bd521433942d85e80f7a731a88cc91a327f38e0"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue May 11 14:40:55 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue May 11 14:40:55 2010 +0200"
      },
      "message": "ipv6: ip6mr: support multiple tables\n\nThis patch adds support for multiple independant multicast routing instances,\nnamed \"tables\".\n\nUserspace multicast routing daemons can bind to a specific table instance by\nissuing a setsockopt call using a new option MRT6_TABLE. The table number is\nstored in the raw socket data and affects all following ip6mr setsockopt(),\ngetsockopt() and ioctl() calls. By default, a single table (RT6_TABLE_DFLT)\nis created with a default routing rule pointing to it. Newly created pim6reg\ndevices have the table number appended (\"pim6regX\"), with the exception of\ndevices created in the default table, which are named just \"pim6reg\" for\ncompatibility reasons.\n\nPackets are directed to a specific table instance using routing rules,\nsimilar to how regular routing rules work. Currently iif, oif and mark\nare supported as keys, source and destination addresses could be supported\nadditionally.\n\nExample usage:\n\n- bind pimd/xorp/... to a specific table:\n\nuint32_t table \u003d 123;\nsetsockopt(fd, SOL_IPV6, MRT6_TABLE, \u0026table, sizeof(table));\n\n- create routing rules directing packets to the new table:\n\n# ip -6 mrule add iif eth0 lookup 123\n# ip -6 mrule add oif eth0 lookup 123\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n\n"
    },
    {
      "commit": "6bd521433942d85e80f7a731a88cc91a327f38e0",
      "tree": "e263e39fc6096ef77e2a1c22d5972447785b2aa5",
      "parents": [
        "f30a77842129b5656360cc1f5db48a3fcfb64528"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue May 11 14:40:53 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue May 11 14:40:53 2010 +0200"
      },
      "message": "ipv6: ip6mr: move mroute data into seperate structure\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "f30a77842129b5656360cc1f5db48a3fcfb64528",
      "tree": "3a01eac73fd0e86d3c7a976ab6bccca9878cd35c",
      "parents": [
        "b5aa30b19121de49021fba57aa1f6e4c787fcf67"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue May 11 14:40:51 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue May 11 14:40:51 2010 +0200"
      },
      "message": "ipv6: ip6mr: convert struct mfc_cache to struct list_head\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "b5aa30b19121de49021fba57aa1f6e4c787fcf67",
      "tree": "dbbf01015bda08d52750f37a797d49c7db1990a9",
      "parents": [
        "c476efbcde5ba58b81ac752f4a894d6db8e17d94"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue May 11 14:40:50 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue May 11 14:40:50 2010 +0200"
      },
      "message": "ipv6: ip6mr: remove net pointer from struct mfc6_cache\n\nNow that cache entries in unres_queue don\u0027t need to be distinguished by their\nnetwork namespace pointer anymore, we can remove it from struct mfc6_cache\nadd pass the namespace as function argument to the functions that need it.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "d94d9fee9fa4e66a0b91640a694b8b10177075b3",
      "tree": "330b2b19e63c92f1fef3d9dbe0733ddeb0109664",
      "parents": [
        "b8883a65be2d925ea82b14ca0068ce9a6c8bac1f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Nov 04 09:50:58 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 04 09:50:58 2009 -0800"
      },
      "message": "net: cleanup include/linux\n\nThis cleanup patch puts struct/union/enum opening braces,\nin first line to ease grep games.\n\nstruct something\n{\n\nbecomes :\n\nstruct something {\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b7058842c940ad2c08dd829b21e5c92ebe3b8758",
      "tree": "5fe78d599fc345ca0bcd4b083b79095a54b2921b",
      "parents": [
        "eb1cf0f8f7a9e5a6d573d5bd72c015686a042db0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 30 16:12:20 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 30 16:12:20 2009 -0700"
      },
      "message": "net: Make setsockopt() optlen be unsigned.\n\nThis provides safety against negative optlen at the type\nlevel instead of depending upon (sometimes non-trivial)\nchecks against this sprinkled all over the the place, in\neach and every implementation.\n\nBased upon work done by Arjan van de Ven and feedback\nfrom Linus Torvalds.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "85efde6f4e0de9577256c5f0030088d3fd4347c1",
      "tree": "28d3f28213e3da05ab3d38ce3ec01f778b713c5e",
      "parents": [
        "9d50638bae05ab7f62d700c9e4a83a1845cf9ef4"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Thu Feb 26 00:51:39 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 26 18:14:14 2009 +0100"
      },
      "message": "make exported headers use strict posix types\n\nA number of standard posix types are used in exported headers, which\nis not allowed if __STRICT_KERNEL_NAMES is defined. In order to\nget rid of the non-__STRICT_KERNEL_NAMES part and to make sane headers\nthe default, we have to change them all to safe types.\n\nThere are also still some leftovers in reiserfs_fs.h, elfcore.h\nand coda.h, but these files have not compiled in user space for\na long time.\n\nThis leaves out the various integer types ({u_,u,}int{8,16,32,64}_t),\nwhich we take care of separately.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nCc: David Airlie \u003cairlied@linux.ie\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCc: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nCc: netdev@vger.kernel.org\nCc: linux-ppp@vger.kernel.org\nCc: Jaroslav Kysela \u003cperex@perex.cz\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8229efdaef1e7913ae1712c0ba752f267e5fcd5e",
      "tree": "ba85dabf90f17b1b735fb8dda4b9bb11c5cd445d",
      "parents": [
        "8b90fc7e5b43aaef941044a4785a42439015b539"
      ],
      "author": {
        "name": "Benjamin Thery",
        "email": "benjamin.thery@bull.net",
        "time": "Wed Dec 10 16:30:15 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 10 16:30:15 2008 -0800"
      },
      "message": "netns: ip6mr: enable namespace support in ipv6 multicast forwarding code\n\nThis last patch makes the appropriate changes to use and propagate the\nnetwork namespace where needed in IPv6 multicast forwarding code.\n\nThis consists mainly in replacing all the remaining init_net occurences\nwith current netns pointer retrieved from sockets, net devices or \nmfc6_caches depending on the routines\u0027 contexts.\n\nSome routines receive a new \u0027struct net\u0027 parameter to propagate the current\nnetns:\n* ip6mr_get_route\n* ip6mr_cache_report\n* ip6mr_cache_find\n* ip6mr_cache_unresolved\n* mif6_add/mif6_delete\n* ip6mr_mfc_add/ip6mr_mfc_delete\n* ip6mr_reg_vif\n\nAll the IPv6 multicast forwarding variables moved to struct netns_ipv6 by\nthe previous patches are now referenced in the correct namespace.\n\nChangelog:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n* Take into account the net associated to mfc6_cache when matching entries in\n  mfc_unres_queue list.\n* Call mroute_clean_tables() in ip6mr_net_exit() to free memory allocated\n  per-namespace.\n* Call dev_net_set() in ip6mr_reg_vif() to initialize dev-\u003end_net \n  correctly.\n\nSigned-off-by: Benjamin Thery \u003cbenjamin.thery@bull.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "58701ad41105638baa0b38ffe9ac5b10469c1fd3",
      "tree": "cb76329caa1cc86fb89c7ef6d81bf924d86699ad",
      "parents": [
        "4e16880cb4225bfa68878ad5b2a9ded53657d054"
      ],
      "author": {
        "name": "Benjamin Thery",
        "email": "benjamin.thery@bull.net",
        "time": "Wed Dec 10 16:22:34 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 10 16:22:34 2008 -0800"
      },
      "message": "netns: ip6mr: store netns in struct mfc6_cache\n\nThis patch stores into struct mfc6_cache the network namespace each\nmfc6_cache belongs to. The new member is mfc6_net.\n\nmfc6_net is assigned at cache allocation and doesn\u0027t change during\nthe rest of the cache entry life.\n\nThis will help to retrieve the current netns around the IPv6 multicast\nforwarding code.\n\nAt the moment, all mfc6_cache are allocated in init_net.\n\nChangelog:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n* Use write_pnet()/read_pnet() to set and get mfc6_net.\n\nSigned-off-by: Benjamin Thery \u003cbenjamin.thery@bull.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bd91b8bf372911c1e4d66d6bb44fe409349a6791",
      "tree": "18a79fc3c86ad833523562d7b73a9a557207b51b",
      "parents": [
        "5eaa65b240c5eb7bf2235eb9dd177c83e6e3832c"
      ],
      "author": {
        "name": "Benjamin Thery",
        "email": "benjamin.thery@bull.net",
        "time": "Wed Dec 10 16:07:08 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 10 16:07:08 2008 -0800"
      },
      "message": "netns: ip6mr: allocate mroute6_socket per-namespace.\n\nPreliminary work to make IPv6 multicast forwarding netns-aware.\n\nMake IPv6 multicast forwarding mroute6_socket per-namespace,\nmoves it into struct netns_ipv6.\n\nAt the moment, mroute6_socket is only referenced in init_net.\n\nSigned-off-by: Benjamin Thery \u003cbenjamin.thery@bull.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7c19a3d280297d43ef5ff7c6b205dc208a16d3d1",
      "tree": "cb8b2603086f117eb543f91a41a42fefede4f31a",
      "parents": [
        "102396ae65108b026e4e1868e30fa013f45a169e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 29 14:37:23 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 29 14:37:23 2008 -0700"
      },
      "message": "net: Unbreak userspace usage of linux/mroute.h\n\nNothing in linux/pim.h should be exported to userspace.\n\nThis should fix the XORP build failure reported by\nJose Calhariz, the debain package maintainer.\n\nNothing originally in linux/mroute.h was exported to userspace\never, but some of this stuff started to be when it was moved into\nthis new linux/pim.h, and that was wrong.  If we didn\u0027t provide these\ndefinitions for 10 years we can reasonably expect that applications\ndefined this stuff locally or used GLIBC headers providing the\nprotocol definitions.  And as such the only result of this can\nbe conflict and userland build breakage.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e0835f8fa56d2d308486f8a34cf1c4480cd27f4e",
      "tree": "8b9e2f60795dbc6e0e0138c8e7c362efecb568e8",
      "parents": [
        "03d2f897e9fb3218989baa2139a951ce7f5414bf"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Jul 03 16:51:22 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Jul 03 17:51:57 2008 +0900"
      },
      "message": "ipv4,ipv6 mroute: Add some helper inline functions to remove ugly ifdefs.\n\nip{,v6}_mroute_{set,get}sockopt() should not matter by optimization but\nit would be better not to depend on optimization semantically.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "623d1a1af77bd52a389c6eda5920e28eb2ee468b",
      "tree": "85d0a7fbcd83b5a2cacf50b24a66c0063f7eca07",
      "parents": [
        "dd3abc4ef52597ec8268274222574b2700ba3ded"
      ],
      "author": {
        "name": "Wang Chen",
        "email": "wangchen@cn.fujitsu.com",
        "time": "Thu Jul 03 12:13:30 2008 +0800"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Jul 03 17:51:56 2008 +0900"
      },
      "message": "ipv6: Do cleanup for ip6_mr_init.\n\nIf do not do it, we will get following issues:\n1. Leaving junks after inet6_init failing halfway.\n2. Leaving proc and notifier junks after ipv6 modules unloading.\n\nSigned-off-by: Wang Chen \u003cwangchen@cn.fujitsu.com\u003e\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "cee8947338d46bccece54c752bf6cd4043035f05",
      "tree": "3f1e30d20e75e66ebb22f9612d9eb64f2e1a8c48",
      "parents": [
        "671a1c7401c6e48f5f2a77ac330727a13a9c8b63"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Sun Apr 13 23:21:16 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 13 23:21:16 2008 -0700"
      },
      "message": "[IPV6] MROUTE: Do not call ipv6_find_idev() directly.\n\nSince NETDEV_REGISTER notifier chain is responsible for creating\ninet6_dev{}, we do not need to call ipv6_find_idev() directly here.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "14fb64e1f449ef6666f1c3a3fa4e13aec669b98d",
      "tree": "92df482215861e4856fe84172d566ebb7d946f4a",
      "parents": [
        "7bc570c8b4f75ddb3fd5dbeb38127cdc4acbcc9c"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Apr 03 09:22:54 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Sat Apr 05 22:33:39 2008 +0900"
      },
      "message": "[IPV6] MROUTE: Support PIM-SM (SSM).\n\nBased on ancient patch by Mickael Hoerdt\n\u003choerdt@clarinet.u-strasbg.fr\u003e, which is available at\n\u003chttp://www-r2.u-strasbg.fr/~hoerdt/dev/linux_ipv6_mforwarding/patch-linux-ipv6-mforwarding-0.1a\u003e.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "7bc570c8b4f75ddb3fd5dbeb38127cdc4acbcc9c",
      "tree": "b688b728c3ea08479f75986d1e9f590fca1f8715",
      "parents": [
        "80a9492a33dd7d852465625022d56ff76d62174d"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Apr 03 09:22:53 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Sat Apr 05 22:33:38 2008 +0900"
      },
      "message": "[IPV6] MROUTE: Support multicast forwarding.\n\nBased on ancient patch by Mickael Hoerdt\n\u003choerdt@clarinet.u-strasbg.fr\u003e, which is available at\n\u003chttp://www-r2.u-strasbg.fr/~hoerdt/dev/linux_ipv6_mforwarding/patch-linux-ipv6-mforwarding-0.1a\u003e.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    }
  ]
}
