)]}'
{
  "log": [
    {
      "commit": "9e55e282acfe725a663fca03771bcb496f0d401e",
      "tree": "fdfd1394d64ac3cf6620de2adeb87267583d9ff1",
      "parents": [
        "c7193a2c126a18d0c3821675fd3e6a921fd36fb8"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Aug 22 06:57:28 2012 -0700"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Aug 22 07:46:42 2012 -0700"
      },
      "message": "Change controller.message_send to use exceptions for exceptional conditions\ninstead of converting them to return codes and losing useful information in the\nprocess; fix a minor bug in controller.poll\n"
    },
    {
      "commit": "e55abf725e212af6708e7cbed639fbf451537662",
      "tree": "28ad8c71352d9ea8d5474faae661c0b71aca90f1",
      "parents": [
        "c8aaa3e5376205cee5094d8c0d6dcb23cba8ea40"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 20:11:42 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 20:11:42 2012 -0700"
      },
      "message": "add --default-timeout option\n"
    },
    {
      "commit": "c8aaa3e5376205cee5094d8c0d6dcb23cba8ea40",
      "tree": "45affb6a2979770637e84e82e7865a853f80391a",
      "parents": [
        "8806bc4712c5bee1eb48a6cb1d94380150c86935"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 19:28:02 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 20:11:11 2012 -0700"
      },
      "message": "use default timeout in most cases\n"
    },
    {
      "commit": "8806bc4712c5bee1eb48a6cb1d94380150c86935",
      "tree": "d7ce3e7185941cfb6b527bf1241f785b19c68b59",
      "parents": [
        "db9d866ddc23f7520f25485b98ab18dd40ac8bc1"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 19:18:37 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 19:18:37 2012 -0700"
      },
      "message": "standardize on -1 for default timeouts\n"
    },
    {
      "commit": "db9d866ddc23f7520f25485b98ab18dd40ac8bc1",
      "tree": "b9ef8480c62cf2f7f7e4f698bf68c7e8ef2d6bf2",
      "parents": [
        "e1da7eaf40daddec475b57becd8c367a0b51a992"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 18:04:24 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 18:04:24 2012 -0700"
      },
      "message": "fix usage of condition variables in dataplane\n"
    },
    {
      "commit": "e1da7eaf40daddec475b57becd8c367a0b51a992",
      "tree": "89c607bf9582f5354f0fd1da609211b18b5e3420",
      "parents": [
        "b64ce3dc57d2adb8fe5df16683b1aadca5c29534"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 15:58:45 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 15:58:45 2012 -0700"
      },
      "message": "convert controller.py to use timed_wait\n"
    },
    {
      "commit": "b64ce3dc57d2adb8fe5df16683b1aadca5c29534",
      "tree": "4357840a680fa6f51c17d2f293e9c2bb4e7eca36",
      "parents": [
        "17cdb12b642280be8525186fb12d8fc7641a5fd9"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 15:37:57 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 15:37:57 2012 -0700"
      },
      "message": "factor out ofutils.timed_wait and simplify Controller.poll\n"
    },
    {
      "commit": "9aca199e38890652679287dc5b2ff93cfa2ac6a0",
      "tree": "fe7f1e6bda53e514f9743ef0e312dc018a3e94ab",
      "parents": [
        "ee3586c6de57b92debf64ca0726383cf1d93554b"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jul 11 17:26:31 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 12 11:56:46 2012 -0700"
      },
      "message": "fix multithreading issues with xid_response\n"
    },
    {
      "commit": "ee3586c6de57b92debf64ca0726383cf1d93554b",
      "tree": "5a9bcb8c5e8f010dd2baa88b546a8a35a362bc83",
      "parents": [
        "c4f071b6570c3305007a0f83bf827709dc88ceb8"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jul 11 17:26:02 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 12 11:47:01 2012 -0700"
      },
      "message": "Use the \"with\" statement to acquire a few locks\n\nThis ensures that the locks are released if an exception occurs.\n"
    },
    {
      "commit": "c4f071b6570c3305007a0f83bf827709dc88ceb8",
      "tree": "0f619d0cb7402213b7fff82afc5d60a2670690db",
      "parents": [
        "58cf05fd00d425329cb251267f668546535de397"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jul 11 17:25:57 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 12 11:44:26 2012 -0700"
      },
      "message": "fix multithreading issues with packet queue\n\nThis change probably breaks some of the semantics of handling incoming openflow\nmessages.\n"
    },
    {
      "commit": "0e8b0924791643ce114c68fac2e4aaefd3b3863d",
      "tree": "331f4f40327e6422804550d8877b56559ddc7adf",
      "parents": [
        "4d5ca926e657cb15cbac8c61f6e35590ec99615a"
      ],
      "author": {
        "name": "Jeffrey Townsend",
        "email": "jeffrey.townsend@bigswitch.com",
        "time": "Wed Jul 11 11:37:46 2012 -0700"
      },
      "committer": {
        "name": "Jeffrey Townsend",
        "email": "jeffrey.townsend@bigswitch.com",
        "time": "Wed Jul 11 11:37:46 2012 -0700"
      },
      "message": "- The DataPlane class now accepts the global configuration when created.\n- The DataPlane class now allows the platform/configuration to override\n  the class used for port traffic. The default class remains DataPlanePort.\n"
    },
    {
      "commit": "8ed984711821afb39f73990a88cc37edfdb07ff2",
      "tree": "10e9ef85e31f64aa13ad36ae3e9b0cf09a8dceaf",
      "parents": [
        "20a3da53bc0971be388361d3eaff01ea5e55091e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jul 11 10:34:52 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jul 11 10:34:52 2012 -0700"
      },
      "message": "add gitignores\n"
    },
    {
      "commit": "3978f24c0b64a8e4d51ef75beda47998c4583bb0",
      "tree": "8a92a319dd6be67f3ca3293be0a6151a930076e5",
      "parents": [
        "899ff8e0325247413c979c7a6364b537e3b896c0"
      ],
      "author": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Wed Jun 13 14:14:09 2012 -0700"
      },
      "committer": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Wed Jun 13 14:14:09 2012 -0700"
      },
      "message": "Fix typo.\nRename pktact.WildcardPriority2 to pktact.WildcardPriorityWithDelete.\n"
    },
    {
      "commit": "1729fdb9b9a1e41529e4b9ad035c919991ca780b",
      "tree": "5e62ce8d54c56629f47352c465212bedf03b6690",
      "parents": [
        "2757e0a1d9d166fde09a50432dc05e768b5a9283"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Thu May 03 09:35:56 2012 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Thu May 03 09:39:19 2012 -0700"
      },
      "message": "Support specifying expect pkt and not expect port\n\nPreviously, in dataplane poll, if you did not specify a port, then\nspecifying an expected packet would be ignored.\n"
    },
    {
      "commit": "f8de518772c7622fffef1dee0381db5ce388475a",
      "tree": "93a8baf16b462ba75ca40fff2c0f129d30b36231",
      "parents": [
        "942f5302a764944e4f7a47cd794f45a2299aa6b8"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Thu Apr 12 22:38:41 2012 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Thu Apr 12 22:38:41 2012 -0700"
      },
      "message": "Support for filtering pkt ins, cleanup\n\nReplaced barrier_to with transact_to.  Allow filtering of packet-in\nmessages which is disabled by default.  A threshold is set and,\nwhen enabled, if N packet ins are received without other messages\nintervening (and without packet-in being expected) subsequent\npacket ins are dropped.\n\nWith packet storms on OVS, this has detected some overrun errors\non buffering and framing gets messed up.\n\nCleaned up some termination code; _socket_ready_handle now\nreturns an error code rather than True/False.\n"
    },
    {
      "commit": "0fc08bddeee38f13c2f9125b78fab44dff803d0d",
      "tree": "57b5beccbd6bff294cb87eed744a421194da2886",
      "parents": [
        "488fbc52b4986db4d69f881209391f2321393af2"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Mon Apr 09 16:56:18 2012 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Mon Apr 09 16:56:18 2012 -0700"
      },
      "message": "Add default timeout for do_barrier\n\nAnd check the result do_barrier in all calls.\n"
    },
    {
      "commit": "eddea776f0dd938977106695f9e3eecb4afb74d7",
      "tree": "50381f905fff438e39bdfda52e3d953eaf2a23b0",
      "parents": [
        "89f7835f53adf198f24439fcf626d016e5fc2dad"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Sat Mar 31 18:34:32 2012 -0700"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Apr 02 08:00:46 2012 -0700"
      },
      "message": "Just print a warning when reading from the controller returns 0 bytes\n"
    },
    {
      "commit": "506614a62cd06c4de63f8e017f9bd8511e797b9f",
      "tree": "94ae771ce1ad00b40474c49f4e7266de0f694b81",
      "parents": [
        "aa5bc065333e901cb2795273e5d1ea522ff2db17"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Thu Mar 29 08:16:59 2012 -0700"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Sat Mar 31 14:38:56 2012 -0700"
      },
      "message": "Ignore padding bytes in the received packet when the length of the\nexpected packet is less than the minimum Ethernet frame size (60 bytes)\n"
    },
    {
      "commit": "04ead7d9880891d7320e16790289d3a3b566339c",
      "tree": "7753b0ef914e75df095a765208e3db9d6d512c2e",
      "parents": [
        "4b29529d5bc101e004ce4c9f31c0b2db46c01b29"
      ],
      "author": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Sat Mar 31 13:30:45 2012 -0700"
      },
      "committer": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Sat Mar 31 13:30:45 2012 -0700"
      },
      "message": "Fix typo in debug message.\n"
    },
    {
      "commit": "4b29529d5bc101e004ce4c9f31c0b2db46c01b29",
      "tree": "dde0b984c04ebeab6257b1011186a4bca0bba245",
      "parents": [
        "dc6fca3d311dfa132f3c6c46ff22a0f719e3e85d"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Fri Mar 30 11:54:14 2012 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Fri Mar 30 11:54:14 2012 -0700"
      },
      "message": "Hopefully addressing race condition\n"
    },
    {
      "commit": "0214da2d5b72a833e31266b8667b080bd48b6125",
      "tree": "326fd7de4df8a599c211812b3e1e7768d4042099",
      "parents": [
        "4e2003090e3f5c55e4413514a15f8c67d8447add"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Mar 19 14:58:02 2012 -0700"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Mar 20 11:13:45 2012 -0700"
      },
      "message": "Once a switch is connected, ignore further connection attempts rather\nthan bailing out (this situation was hard to reproduce but seemed\ncorrelated with system load and how frequently the switch tries to\nestablish a controller connection...)\n"
    },
    {
      "commit": "4e2003090e3f5c55e4413514a15f8c67d8447add",
      "tree": "39a34b5ddaeb64bd6599900e52ec39c18cc02dc5",
      "parents": [
        "6ccbb07fbe7af377bcb746487d9c9be3f3f0d7a9"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Mar 19 14:53:31 2012 -0700"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Mar 20 11:13:44 2012 -0700"
      },
      "message": "Log the ingress port of each packet received\n"
    },
    {
      "commit": "4306d3e58d6534ab85410df68fd87eb9c5462169",
      "tree": "a38e0df312eb9401bd7a432948a5c857b8fdb4be",
      "parents": [
        "677c0b76152c167ff95bb8f23db571d45116478b"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Wed Sep 07 09:42:26 2011 -0700"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Mar 20 11:13:44 2012 -0700"
      },
      "message": "Update packet offset before continue stmts\n"
    },
    {
      "commit": "cf26b7a4bd60f6b47709aa34f33aac48e7ab0b61",
      "tree": "444688861823fe6ff85e4f5ff2f60239e95020e0",
      "parents": [
        "836e5bd85531c1bf7ba7e7a73c7358ad732b7d1c"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Fri Aug 05 10:15:35 2011 -0700"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Mar 20 11:13:44 2012 -0700"
      },
      "message": "Added relax option to oftest\n\nThis option relaxes restrictions around receiving unexpected packets.\nIt\u0027s main use case is in evironments where in-band control is enabled and\nas a consequence packets are forwarded to dataplane ports.\n"
    },
    {
      "commit": "836e5bd85531c1bf7ba7e7a73c7358ad732b7d1c",
      "tree": "ac99fc2cda375471ba181ca5f5390ec178402bbe",
      "parents": [
        "16eff42a95c55079d608512667c9b5d3091ca8d6"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Mar 20 11:08:53 2012 -0700"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Mar 20 11:13:44 2012 -0700"
      },
      "message": "Fix check for incomplete packet\n"
    },
    {
      "commit": "e3e452a3e5b2d6d288a6efeac52911f54175c6fa",
      "tree": "c2f108b5bd08b759a8fd6de0b423b9e1c58c3b68",
      "parents": [
        "3abf347f0a203cdc81ec682555c394d11b746e51"
      ],
      "author": {
        "name": "Rob Sherwood",
        "email": "rob.sherwood@bigswitch.com",
        "time": "Tue Mar 06 09:24:26 2012 -0800"
      },
      "committer": {
        "name": "Rob Sherwood",
        "email": "rob.sherwood@bigswitch.com",
        "time": "Tue Mar 06 09:24:26 2012 -0800"
      },
      "message": "Bugfix to controller I/O parsing\n\noftest incorrectly assumed that OF messages would\nnot span the data from a read(), and this is not\ntrue always.\n"
    },
    {
      "commit": "7455ed25ff380f32b8c0552c9fc012076757c2c6",
      "tree": "6184057bf7a1896c6b3371d722ac7bb0704e00ee",
      "parents": [
        "ba3745c94f562b2f89c6b7a6df7a9a7e945f4e4e"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Oct 27 10:51:12 2010 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Oct 27 10:51:12 2010 -0700"
      },
      "message": "Update buffer consumption for echo response\n"
    },
    {
      "commit": "8dbc4d73059a623b4103c5f8c4354343ae221997",
      "tree": "81381faadc242d8fb29b829d61aa7171371e7a6c",
      "parents": [
        "551befadb763269637cb38372400a31ad1a2ee1f"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Jul 17 00:32:46 2010 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Jul 17 00:32:46 2010 -0700"
      },
      "message": "Correct dl_match type when generating flow match from a tagged pkt\n"
    },
    {
      "commit": "741b118d4b68515796cd721c3459ed03ba274d24",
      "tree": "95ba41525d7f2cd8e67319e1da4239efaf141a87",
      "parents": [
        "6d4670680191633feca5a2eb638177c37d39a716"
      ],
      "author": {
        "name": "Glen Gibb",
        "email": "grg@stanford.edu",
        "time": "Thu Jul 08 16:43:58 2010 -0700"
      },
      "committer": {
        "name": "Glen Gibb",
        "email": "grg@stanford.edu",
        "time": "Thu Jul 08 16:43:58 2010 -0700"
      },
      "message": "Increase receive size for received OF msgs\n\nIt\u0027s possible for an OpenFlow instance to generate very large response\npackets if oftest and the device under test are communicating via the\nloopback interface (or using jumbo Ethernet frames). Increase the\nreceive size to prevent partial packets from being retrieved.\n"
    },
    {
      "commit": "6d4670680191633feca5a2eb638177c37d39a716",
      "tree": "900dee539387d5837ead34aed3f4dd953a40521c",
      "parents": [
        "39bf691b2a0427ccefeac3d2b964898e71f67536"
      ],
      "author": {
        "name": "Glen Gibb",
        "email": "grg@stanford.edu",
        "time": "Thu Jul 08 16:15:08 2010 -0700"
      },
      "committer": {
        "name": "Glen Gibb",
        "email": "grg@stanford.edu",
        "time": "Thu Jul 08 16:15:08 2010 -0700"
      },
      "message": "Support multiple OF msgs in a single pkt\n\nA single TCP packet may contain multiple OpenFlow messages. Update\n_pkt_handle to iterate through the set of OF msgs in a single packet.\n"
    },
    {
      "commit": "9c31e22302d39eb7ae5361fa3dec5e8763bc5553",
      "tree": "c63466d34c0124f4385d5417cb24c10cd482ad8f",
      "parents": [
        "8b886b16b434476a9c1c0063e35c6bcc9c30392e",
        "b8fb3c382fa1564bc276277c54f9c4156055727f"
      ],
      "author": {
        "name": "Tatsuya Yabe",
        "email": "tyabe@stanford.edu",
        "time": "Wed Jun 16 13:48:02 2010 -0700"
      },
      "committer": {
        "name": "Tatsuya Yabe",
        "email": "tyabe@stanford.edu",
        "time": "Wed Jun 16 13:48:02 2010 -0700"
      },
      "message": "Merge branch \u0027tyabe\u0027\n\nConflicts:\n\ttests/pktact.py\n"
    },
    {
      "commit": "b8fb3c382fa1564bc276277c54f9c4156055727f",
      "tree": "61efcafe033ac2c9f1bccd54dec1eaa15ea7a31e",
      "parents": [
        "f5ffb97b92a933ed7781a0a2e36b101b3f62c5e3"
      ],
      "author": {
        "name": "Tatsuya Yabe",
        "email": "tyabe@stanford.edu",
        "time": "Mon Jun 14 15:48:36 2010 -0700"
      },
      "committer": {
        "name": "Tatsuya Yabe",
        "email": "tyabe@stanford.edu",
        "time": "Mon Jun 14 15:48:36 2010 -0700"
      },
      "message": "Added: DirectPacket test with ICMP matching\n"
    },
    {
      "commit": "89d5734045e35fe0998f5c372fb5116e4f763e20",
      "tree": "32dfa4b2fe391f297d116472e996640466269849",
      "parents": [
        "9f47f4d4dd1f73db0f2f45c53680f865f65116d6"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Mon Jun 07 16:24:59 2010 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Mon Jun 07 16:24:59 2010 -0700"
      },
      "message": "Added flow expire/stats tests\n\nContributions from Google test engineers.  Basic tests for flow\nexpiration message generation and stats checking.  They also\nadded code for properly managing network prototype and wildcards\nfor TCP/UDP packets in parse.py.\n"
    },
    {
      "commit": "09c2c5986b137841adb59d25e26bf2a3dd29c549",
      "tree": "cf1741ac859241a4289da1d07cb3b0192278d31a",
      "parents": [
        "4aa1312087a5285f71f791b4c555a0fc62b31912"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu May 13 14:21:52 2010 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu May 13 14:21:52 2010 -0700"
      },
      "message": "Fix debug output for no resp on XID transaction\n"
    },
    {
      "commit": "3afcf72f4d904dcfeb2cc3d6b2b965d7d67552fa",
      "tree": "2106f33270230490f5aa3be25563d396dc97261b",
      "parents": [
        "f31718773f1d4e8634a96d02ad0f93fc2bea307b"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Tue May 11 15:05:11 2010 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Tue May 11 15:05:11 2010 -0700"
      },
      "message": "Copy actions put on lists\n\nPrior to adding an action to a list, do a deep copy of it.\nThis allows the caller to update the action object without\naffecting the actions already on the list.\n"
    },
    {
      "commit": "a99c21ad8909883b5040a1bac384f81410bf987a",
      "tree": "d68ee0e8f5baef8f7296cea7e49dd6861ab5b765",
      "parents": [
        "b2d1d044758cc66949665215ce79116bbfbe8377"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri May 07 09:23:34 2010 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri May 07 09:23:34 2010 -0700"
      },
      "message": "Debug output change\n"
    },
    {
      "commit": "b2d1d044758cc66949665215ce79116bbfbe8377",
      "tree": "76e4da76705485ef079e62453ba93d907a2ee8a6",
      "parents": [
        "ef701f4cf33eb44522c5d0e891940f360fd70de9"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri May 07 09:23:11 2010 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri May 07 09:23:11 2010 -0700"
      },
      "message": "Check for OpenFlow version compatibility\n"
    },
    {
      "commit": "958f3b9e93b6110735fab508e5868526e40e61fb",
      "tree": "a83c2728a07f2a88bb7088dc8be8d33b571f0e1a",
      "parents": [
        "6f223c841534e682d00f40f6341230f4264beb71"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@snowcrash.dbd.mogulmouse.net",
        "time": "Fri Mar 12 21:58:57 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@snowcrash.dbd.mogulmouse.net",
        "time": "Fri Mar 12 21:58:57 2010 -0800"
      },
      "message": "Clean up scapy references\n"
    },
    {
      "commit": "9f088483ac78d32547ff99e3d7c3a8fd4e2234b0",
      "tree": "5a93aed30e2e8c172fc3add92abefe6f7c393de5",
      "parents": [
        "f4426d5e9d379c4a08f8002b0cd46faaef35719e"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Mar 12 13:56:02 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Mar 12 13:56:02 2010 -0800"
      },
      "message": "Bad mixed import for scapy\n"
    },
    {
      "commit": "235d7cbbc96908d10bbf30d52ee8950e3b881f9b",
      "tree": "341fd10a5b635c4d23a820720fd5585cba7a37b8",
      "parents": [
        "fa16d59a54dd507c063860286a86df693ac98f14"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Mar 12 10:03:18 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Mar 12 10:03:18 2010 -0800"
      },
      "message": "Explicit logging import; was failing on CentOS 5.2\n"
    },
    {
      "commit": "f3d64d69dae47818152f015d469aeadd1eb66961",
      "tree": "61b9be2bc2348b6498daca3305a0f543fa692443",
      "parents": [
        "79f3608496bd5c1f10b5414e787407d00bc23a50"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Mar 11 20:17:35 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Mar 11 20:17:35 2010 -0800"
      },
      "message": "Do not list scapy as a rqmt for now as it breaks on CentOS\n"
    },
    {
      "commit": "d2ca1031708f717da7e8db5b05a87972a0a429a9",
      "tree": "6be35dcf9ae05fd5cbde36552cb86cf6a266a21a",
      "parents": [
        "0db53eb3dd0c33696698798244ca2f397b8b2ba8"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Mar 10 14:40:26 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Mar 10 14:40:26 2010 -0800"
      },
      "message": "As much as possible, remove dependence on python 2.5\n"
    },
    {
      "commit": "0db53eb3dd0c33696698798244ca2f397b8b2ba8",
      "tree": "0cc0086091629babf2f7c1774a369ef62c7e266d",
      "parents": [
        "cb6b5d7ec084e01f353e837d99b7382ca408ea99"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Mar 10 14:00:02 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Mar 10 14:00:02 2010 -0800"
      },
      "message": "Catch exception on socket open and exit\n"
    },
    {
      "commit": "cb6b5d7ec084e01f353e837d99b7382ca408ea99",
      "tree": "4e2bccb46b223424215109728cd44c8f13998b4b",
      "parents": [
        "5eba844727d48f669c643238ccf4ed2cb6204c1c"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Mar 10 13:59:33 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Mar 10 13:59:33 2010 -0800"
      },
      "message": "Support scapy packet as input for flow match\n"
    },
    {
      "commit": "46755faa9b26c268ea60002531f610a9c3eb965e",
      "tree": "43c5a0cb7cd6db3b4a2882d44de2d1e3d8ab09da",
      "parents": [
        "11c26e7991de1a351e56a049fbca261a26493194"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Tue Mar 09 21:44:29 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Tue Mar 09 21:44:29 2010 -0800"
      },
      "message": "Changed show to return a string rather than print\n"
    },
    {
      "commit": "11c26e7991de1a351e56a049fbca261a26493194",
      "tree": "894659869db051b45a7683c430a5299752ab99da",
      "parents": [
        "d12b661c13b90813e73aeb402d240b04b2d84dec"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sun Mar 07 22:03:57 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sun Mar 07 22:03:57 2010 -0800"
      },
      "message": "indentation, spaces\n"
    },
    {
      "commit": "d12b661c13b90813e73aeb402d240b04b2d84dec",
      "tree": "7941c4c3c9369e2dfa2b8bd3eff5cced737a20b3",
      "parents": [
        "1a88c12344b8e76a1a7a620809bcc61abafb3db6"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sun Mar 07 22:00:46 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sun Mar 07 22:00:46 2010 -0800"
      },
      "message": "Fixed race condition\n\nIt\u0027s possible that a packet is being processed when\npoll() is called, but that it has not been enqueued yet.\nIf poll gets control, it checks the queue and then sleeps\nif it can\u0027t find it\u0027s packet.  But if the check to notify\npoll has already taken place, the intended packet is\nenqueued after poll has checked for it.  Fix this by\nextending the period that the packet processing routine\nholds the mutex.\n"
    },
    {
      "commit": "2c0dba3b10266936d137c8756ef5dbc41a48a67f",
      "tree": "924417aa0c787ab2312751904e0c22eca92fe0c1",
      "parents": [
        "52f6444dcad3650d6eb0844ac140d69295335b5d"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Mar 06 22:47:06 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Mar 06 22:47:06 2010 -0800"
      },
      "message": "Setup and test spec implementation\n\nSetup now installs code as normal conventions:\ncd oftest/src/python\npython setup.py install\n\nSee basic.py for recommended import conventions\n\nCommand line parsing significantly updated; allow --test-spec\nto indicate a module or specific tests to include.\n"
    },
    {
      "commit": "4837010d858480e186a9aeb7b28dc2555db307d3",
      "tree": "57c9b4cb88846f288949fa0b53b66619f5b0352e",
      "parents": [
        "ea8ad807a0eef55315a251e055405ecdcc4fec41"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Mar 03 15:17:33 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Mar 03 15:17:33 2010 -0800"
      },
      "message": "Major overhaul of oftest command interface\n\nAdded tests/oft as top level executable\n\nSupport command line options for many config params\n\nUse logging module for output\n\nGot rid of oft_config.py; consolidate configuration in\noft (top level script) and pass around as a dictionary\n\nAdd oft_assert.py (the one useful piece of oft_config that\nremained).\n"
    },
    {
      "commit": "ea8ad807a0eef55315a251e055405ecdcc4fec41",
      "tree": "4c940a7eb24b8287d8aa816157cefaef6487c7da",
      "parents": [
        "c4747969e0dc491ea58aa485358c2454acbdeb23"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Mon Feb 22 20:30:18 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Mon Feb 22 20:30:18 2010 -0800"
      },
      "message": "Oops, missed this file in original commit\n"
    },
    {
      "commit": "f307f3fb64453a1abb9fbbeeabe31af28aad7434",
      "tree": "8826533f7b18fcb65aed7afae4332544bcf2d69c",
      "parents": [
        "90576bddc22855f816bace1b8afb3a13913259b5"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 19 11:42:29 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 19 11:42:29 2010 -0800"
      },
      "message": "Removed a bunch of unused clutter\n"
    },
    {
      "commit": "90576bddc22855f816bace1b8afb3a13913259b5",
      "tree": "c9c318a8d3e3d87f7abc5372e0ccefb755d564a4",
      "parents": [
        "4d065977ffd792f847b257347a26e8683ddc26b2"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 19 10:59:02 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 19 10:59:02 2010 -0800"
      },
      "message": "Comments and todo additions\n"
    },
    {
      "commit": "4d065977ffd792f847b257347a26e8683ddc26b2",
      "tree": "d2abc0771ae71a250512fc6df75ec86709b527d4",
      "parents": [
        "e226eb1a8a8257d43dd8bf7d5a619f8bb12c18a6"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Feb 18 23:11:32 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Feb 18 23:11:32 2010 -0800"
      },
      "message": "Doc init param\n"
    },
    {
      "commit": "e226eb1a8a8257d43dd8bf7d5a619f8bb12c18a6",
      "tree": "fa099163d1eb7bff8b79e58c0fb73f2f7e8f75cf",
      "parents": [
        "4557d783e2a5983c17c857d185fc102ed58c313b"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Feb 18 23:06:30 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Feb 18 23:06:30 2010 -0800"
      },
      "message": "Mostly polling and timeout support\n\nSupport poll timeouts for controller messages\nSupport poll and timeouts for dataplane messages\nChanged name of dataplane pkt get to \u0027poll\u0027\nSix basic test cases now passing on LB4G\nAdded test-framework assertion\nAdded additional files to lint checking\n"
    },
    {
      "commit": "710438c723e18e9e0e2d2ef070f158ef7d24950a",
      "tree": "bc605e46253f8163a8c22613ce3b781bd0789c69",
      "parents": [
        "a92e75bcf162b6e998daa2ca7ffce2069dce9736"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Feb 18 15:16:07 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Feb 18 15:16:07 2010 -0800"
      },
      "message": "Mostly changes to socket deployment\n\nUse select for handling sockets; hopefully better cleanup approach\n\nAdded connection semaphore for controller\nSupport message objects as arguments to controller.message_send\nSupport initial hello from controller when connected to switch\n"
    },
    {
      "commit": "2e1a10766e659ea24595539e099727c56e251098",
      "tree": "2302a08b7c88c6de34938bb89f65dc71e5e5a79c",
      "parents": [
        "1b3f6906767c2c169b00b91312d8ddb71c72e59d"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Mon Feb 15 14:15:19 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Mon Feb 15 14:15:19 2010 -0800"
      },
      "message": "Trivial setup file\n"
    },
    {
      "commit": "1b3f6906767c2c169b00b91312d8ddb71c72e59d",
      "tree": "205811371728a4429ab283616e7e82a55a296d94",
      "parents": [
        "dba4c34563f848906b1a5a63df1dd9ebb621b1ef"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Mon Feb 15 14:14:19 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Mon Feb 15 14:14:19 2010 -0800"
      },
      "message": "Lots of reorg and wrestling with sockets\n"
    },
    {
      "commit": "dba4c34563f848906b1a5a63df1dd9ebb621b1ef",
      "tree": "26ba8df934c38e9a791f62c7cc1f78c04145d5c4",
      "parents": [
        "dba244e62b83525246e9b3a88e801a34c6bdda7a"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Mon Feb 15 14:13:02 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Mon Feb 15 14:13:02 2010 -0800"
      },
      "message": "Added default debug level\n\nAlso, just one test port for bcm_indigo for now\n"
    },
    {
      "commit": "d7e2dbedd24da852edb42a68ba315da719db553e",
      "tree": "57ad07d074ee1cfdfcf7a7eaa780936a4fd686ac",
      "parents": [
        "ec857daa57c1f6cd6e9225b9a530560e2a6d9fd6"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Feb 13 21:51:15 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Feb 13 21:51:15 2010 -0800"
      },
      "message": "Moved core code up to oftest directory\n"
    },
    {
      "commit": "ec857daa57c1f6cd6e9225b9a530560e2a6d9fd6",
      "tree": "29632d9a7a800c96d95c555a6fb05a0214fbf9b4",
      "parents": [
        "3087a4632f30ba688dc50e4868d384dfa38bbf89"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Feb 13 21:49:32 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Feb 13 21:49:32 2010 -0800"
      },
      "message": "Moved code up one directory\n"
    },
    {
      "commit": "3087a4632f30ba688dc50e4868d384dfa38bbf89",
      "tree": "22d46b995aa6d60b20e94e36dc99a4e40e7c0e4a",
      "parents": [
        "411489d65a53503c5d4ba54a980628053f035a1c"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Feb 13 14:01:47 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Feb 13 14:01:47 2010 -0800"
      },
      "message": "Moved dataplaneport to dataplane so as only one file\n"
    },
    {
      "commit": "08d9dfeeb37a009b4f96b2ee989db4bd689e9c2a",
      "tree": "0890d12bbc409bdf531236944615c90599390153",
      "parents": [
        "19dbc79ca2807118789ef28f7c0971a1c29e6d16"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 12 23:02:11 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 12 23:02:11 2010 -0800"
      },
      "message": "Changed debug output\n"
    },
    {
      "commit": "19dbc79ca2807118789ef28f7c0971a1c29e6d16",
      "tree": "e018aa7703a1bfb2a86c39b08554c98d656ede77",
      "parents": [
        "21c75c7fc01523e5e3283444a25d8bad17cc9df4"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 12 23:00:54 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 12 23:00:54 2010 -0800"
      },
      "message": "Added promisc stuff here; moved other stuff to controller\n"
    },
    {
      "commit": "21c75c7fc01523e5e3283444a25d8bad17cc9df4",
      "tree": "656fd8a3d1b11c4e5499da05eec75588d7f20b39",
      "parents": [
        "9be11bc0b4979c17970e5cc8792680cf3434f5dc"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 12 22:59:24 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 12 22:59:24 2010 -0800"
      },
      "message": "Major changes\n\nAdded threading. Added queuing of received messages\nChanged function prototypes.  Debug counters.\n"
    },
    {
      "commit": "9be11bc0b4979c17970e5cc8792680cf3434f5dc",
      "tree": "ba43f9c777bbc409b68cac108f91b6d53ba5e738",
      "parents": [
        "a3b20188ac8746b4637862674882b9e21c03d9ee"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 12 22:58:46 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 12 22:58:46 2010 -0800"
      },
      "message": "Added debug, etc to config.py and moved to oft_config.py due to conflict\n"
    },
    {
      "commit": "a3b20188ac8746b4637862674882b9e21c03d9ee",
      "tree": "48fb43dcea2b0c0b2ec42369f154d431d2f35fd0",
      "parents": [
        "dc881813b8aba78eb434eec70278c72f111cf043"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Feb 10 22:49:34 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Feb 10 22:49:34 2010 -0800"
      },
      "message": "Comment changes\n"
    },
    {
      "commit": "b66b112491b5fad1009c7ca10401379ff1613889",
      "tree": "6125940c4c3400140445b920474274f842add3d8",
      "parents": [
        "56eb48d9a6c7213264b980ad0c5d470a33570ee5"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Feb 10 22:38:49 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Feb 10 22:38:49 2010 -0800"
      },
      "message": "Added scapy and packet to flow match\n"
    },
    {
      "commit": "56eb48d9a6c7213264b980ad0c5d470a33570ee5",
      "tree": "a5e08e0fac1fe3f22e79b46621de765bb1471081",
      "parents": [
        "d0dcca8520cb4d8f313075af29a72ac0f0058264"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Feb 10 22:38:24 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Feb 10 22:38:24 2010 -0800"
      },
      "message": "Added vendor action to be recognized\n"
    },
    {
      "commit": "e37999f12704c95fe06a225e9bbda0a58da7acb8",
      "tree": "7be723e6697ace24c89d6d9437fde96ea1170759",
      "parents": [
        "b9cb548960025dab688f754d61d9479faa8b971b"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Tue Feb 09 15:27:12 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Tue Feb 09 15:27:12 2010 -0800"
      },
      "message": "Added netutils; update for changed paths\n"
    },
    {
      "commit": "b9cb548960025dab688f754d61d9479faa8b971b",
      "tree": "7171a5290295f8ebbf491e042d642f0cd07d31e3",
      "parents": [
        "34089522e7b488249bd9de2944d7199975655e8e"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Tue Feb 09 15:23:12 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Tue Feb 09 15:23:12 2010 -0800"
      },
      "message": "Renamed files\n\noft_config \u003d\u003d\u003e config\nofmsg \u003d\u003d\u003e protocol\nofmsg/of_message \u003d\u003d\u003e protocol/parse\nofmsg/ofp \u003d\u003d\u003e protocol/cstruct\nofmsg/ofp_aux \u003d\u003d\u003e protocol/class_maps\n"
    },
    {
      "commit": "34089522e7b488249bd9de2944d7199975655e8e",
      "tree": "91175e34189784cea14959fbaba99a1310a16215",
      "parents": [
        "10fe5c2c6a97bdd2b44331199a40cd5e03e7f42f"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sun Feb 07 23:07:41 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sun Feb 07 23:07:41 2010 -0800"
      },
      "message": "Added controller, dataplane and configuration files\n"
    },
    {
      "commit": "c398ca975de89de0338b9f2f64aba48c80ae0ff4",
      "tree": "3dfb18bf2e1af487982b4802e0009ecc7f33440c",
      "parents": [
        "5d9911fc30043064aa5b3c7ef8bcb5ad64c16df8"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sun Feb 07 22:57:28 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sun Feb 07 22:57:28 2010 -0800"
      },
      "message": "Added type based functions and extend\n"
    },
    {
      "commit": "f75360a6820e5e05fd72f528b0f246ffd2b39811",
      "tree": "e9d1dda4b3672d43cf5414badf4734861fa0d562",
      "parents": [],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 05 22:22:54 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri Feb 05 22:22:54 2010 -0800"
      },
      "message": "Initial oftest skeleton with wrapper generators and pylibopenflow\n"
    }
  ]
}
