)]}'
{
  "commit": "5c78b3d006e6926f938796cffa08e8e14fb8e7af",
  "tree": "19f8f80511cba84e0d70ac22667321a4a7df0d60",
  "parents": [
    "590188b67db4021b9d1552238ef49482dd5f0123"
  ],
  "author": {
    "name": "paul",
    "email": "paul",
    "time": "Wed Jan 25 04:31:40 2006 +0000"
  },
  "committer": {
    "name": "paul",
    "email": "paul",
    "time": "Wed Jan 25 04:31:40 2006 +0000"
  },
  "message": "[zebra/solaris] Interface state fixups for Solaris.\n\n2006-01-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) More solaris PF_ROUTE hacks. The IFF_UP mangling\n\t  for solaris was incomplete on the PF_ROUTE side. fix it.\n\t  This changeset generally uglifies things. For some future\n\t  work I\u0027d like to see the state changes seperated out from\n\t  the details of the code. Differences between systems might\n\t  then be slightly easier to implement without convoluted\n\t  hacks.\n\t  Changes should be specific to Solaris mostly, however\n\t  also tested on FreeBSD 6.\n\t* if_ioctl_solaris.c: (interface_list_ioctl) ignore ~IFF_UP\n\t  interfaces, we\u0027ll hear about them when/if interface goes up\n\t  through NEWADDR.\n\t  Update flags explicitely at end of it to kick mangling.\n\t* ioctl_solaris.c: (if_mangle_up) removed to interface.c, in\n\t  kind.\n\t  (lifreq_set_name) more convenient to take the string, than\n\t  the ifp.\n\t  (if_get_flags_direct) new convenience function, returns\n\t  the actual flags. Used during bootstrap in if_ioctl_solaris.c\n\t  to peek at flags of logical interfaces to see whether or\n\t  not to ignore them.\n\t  (if_get_flags) ENXIO means it\u0027s gone, poke out IFF_UP and\n\t  kick flags update.\n\t  (if_{un,}set_flags) flags argument should be 64bit.\n\t* ioctl.{c,h}: flags argument should be 64bit.\n\t* interface.h: Add a \u0027primary_state\u0027 flag to struct zebra_if on\n\t  SUNOS_5.\n\t  Export if_flags_update.\n\t* interface.c: (if_flags_mangle) moved over in kind from\n\t  ioctl_solaris.c. Nasty kludge to try get IFF_UP right, as\n\t  much as is possible. Also keep track of the actual IFF_UP\n\t  value for the primary interface, so we can know when the ifp\n\t  must be deleted.\n\t  (if_flags_update) Take a new interface flags value, apply it\n\t  to the interface, and take whatever actions are required due\n\t  to flag transitions.\n\t  (if_refresh) flag state change logic is moved out to\n\t  previous. Just call if_get_flags, which will end up using\n\t  previous to effect the update of flags.\n\t  (if_flag_dump_vty) IFF_IPV{4,6} aren\u0027t interesting, VIRTUAL\n\t  and NOXMIT are though.\n\t* kernel_socket.c: (ifm_read) Down-\u003eDown transitions shouldn\u0027t\n\t  create ifp, for non-IFANNOUNCE systems.\n\t  Use if_flags_update to update flags.\n\t  flag transition logic is now handled automatically through\n\t  if_flags_update.\n\t  (ifam_read) Better to call if_refresh *after* adding\n \t  connected addresses, as connected count affects IFF_UP on\n \t  IFF_UP-mangled systems.\n \t  On Solaris, Up-\u003eDown due to DELADDR means we need to delete\n\t  the ifp - the IFINFO might already have been and gone.\n\t* rt.h: include other dependent headers.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b40f78fb9cbcc5cfcb10d04dc1da445ef3a66115",
      "old_mode": 33188,
      "old_path": "zebra/ChangeLog",
      "new_id": "fab2648073c6c02d5a1f624cd965fd089c3be335",
      "new_mode": 33188,
      "new_path": "zebra/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "a671518ea6fb7fad6cd5fa8e4db6ff8067284fbc",
      "old_mode": 33188,
      "old_path": "zebra/if_ioctl_solaris.c",
      "new_id": "095bcab6394c80065d2b645ac8e8e0e6fa7f2e92",
      "new_mode": 33188,
      "new_path": "zebra/if_ioctl_solaris.c"
    },
    {
      "type": "modify",
      "old_id": "5f9c7a234e40324134343d0ea96494ed8201d880",
      "old_mode": 33188,
      "old_path": "zebra/interface.c",
      "new_id": "d4266f59bf320793b92f31abd8dfa18a8f38ef15",
      "new_mode": 33188,
      "new_path": "zebra/interface.c"
    },
    {
      "type": "modify",
      "old_id": "0083cbabef607645a2e01fafd599aceb3cd9c9fb",
      "old_mode": 33188,
      "old_path": "zebra/interface.h",
      "new_id": "9a69dfa33b5c3167decc43de1f5de9f090e8d279",
      "new_mode": 33188,
      "new_path": "zebra/interface.h"
    },
    {
      "type": "modify",
      "old_id": "4137acfafe85a1c10748e18a2a6faacc31b0954d",
      "old_mode": 33188,
      "old_path": "zebra/ioctl.c",
      "new_id": "06be5bec9987ca46ee919010834104ea27dd1f1c",
      "new_mode": 33188,
      "new_path": "zebra/ioctl.c"
    },
    {
      "type": "modify",
      "old_id": "5d9e09f03c40dc173f8fbb237bbcf9a3cc55df1e",
      "old_mode": 33188,
      "old_path": "zebra/ioctl.h",
      "new_id": "fee9b725c4b01f80b98e2c808665caba1e7c55b9",
      "new_mode": 33188,
      "new_path": "zebra/ioctl.h"
    },
    {
      "type": "modify",
      "old_id": "ec1d2c440384855ba94f5e84c99d4d3dbeaadf4e",
      "old_mode": 33188,
      "old_path": "zebra/ioctl_solaris.c",
      "new_id": "2f05bf127c19f607e7a09146ccc237fb2c789225",
      "new_mode": 33188,
      "new_path": "zebra/ioctl_solaris.c"
    },
    {
      "type": "modify",
      "old_id": "ae19ef8fec940041bcd44f9e5aa089bc04257a1f",
      "old_mode": 33188,
      "old_path": "zebra/kernel_socket.c",
      "new_id": "9764cbb374e67a81c2edf24f719a51cad0327532",
      "new_mode": 33188,
      "new_path": "zebra/kernel_socket.c"
    },
    {
      "type": "modify",
      "old_id": "82747d3d73eee3e662bedd641d8c1f5bcbd4a04b",
      "old_mode": 33188,
      "old_path": "zebra/rt.h",
      "new_id": "8bfe5a4290a26beb7418762c08d77726c768df1c",
      "new_mode": 33188,
      "new_path": "zebra/rt.h"
    }
  ]
}
