let edge_attributes (e, dynamic) =
    let d, z = G.edge_dpd e in
    let attrib = [] in
    let attrib = match z with 
      | None -> attrib
      | Some z ->
          let txt = 
            Pretty_utils.sfprintf "@[<h 1>%a@]" Locations.Zone.pretty z in
          (`Label txt) :: attrib
    in
    let attrib =
      let color =
        if Dpd.is_data d then (if dynamic then 0xFF00FF else 0x0000FF)
        else  (if dynamic then 0xFF0000 else 0x000000)
      in (`Color color) :: attrib
    in
    let attrib =
      if Dpd.is_ctrl d then (`Arrowhead `Odot)::attrib else attrib
    in
    let attrib =
      if Dpd.is_addr d then (`Style `Dotted)::attrib else attrib
    in attrib