MPLS TE - Link and Node Protection

Hi Guys,
Just revisiting an old topic again - MPLS-TE Link and Node Protection.
Is it enough that the backup path (facility backup as supported by IOS) just merge on any LSR of the protected LSP? It does seem to be that way. For example, consider the following topology -
R1-------R2-------R3------R4------R6
            |_____R5____|
The Primary LSP is setup with explicit path R1-R2-R3-R4-R6 and requesting Link-Protection.
R2 protects the link R2-R3 with a backup LSP which has an explicit path R2-R5-R4. The backup LSP merges on the Primary LSP but R4 is not the next-hop to R2 protecting the primary LSP.
This works in my testing but my understanding was that for-
Link Protection - the backup LSP must be terminated on the LSR which is next-hop to the LSR protecting the primary LSP
Node Protection - the backup LSP must be terminated on the LSR which is next-next-hop to the LSR protecting the primary LSP
Your thoughts?
Regards,
Amit.

NHOP Versus NNHOP Backup TunnelsMore than one backup tunnel can protect a given LSP, where one backup tunnel terminates at the LSP
’sNNHOP, and the other terminates at the LSP
’s NHOP. In this case, the router chooses the backup tunnel thatterminates at the NNHOP (that is, FRR prefers NNHOP over NHOP backup tunnels)

Similar Messages

  • Help with building a JTree using tree node and node renderers

    Hi,
    I am having a few problems with JTree's. basically I want to build JTree from a web spider. The webspide searches a website checking links and stores the current url that is being processed as a string in the variable msg. I wan to use this variable to build a JTree in a new class and then add it to my GUI. I have created a tree node class and a renderer node class, these classes are built fine. can someone point me in the direction for actually using these to build my tree in a seperate class and then displaying it in a GUI class?
    *nodeRenderer.java
    import javax.swing.*;
    import javax.swing.tree.*;
    import java.awt.*;
    import java.net.*;
    public class nodeRenderer extends DefaultTreeCellRenderer
                                       implements TreeCellRenderer
    public static Icon icon= null;
    public nodeRenderer() {
    icon = new ImageIcon(getClass().getResource("icon.gif"));
    public Component getTreeCellRendererComponent(
    JTree tree,
    Object value,
    boolean sel,
    boolean expanded,
    boolean leaf,
    int row,
    boolean hasFocus) {
    super.getTreeCellRendererComponent(
    tree, value, sel,
    expanded, leaf, row,
    hasFocus);
    treeNode node = (treeNode)(((DefaultMutableTreeNode)value).getUserObject());
    if(icon != null) // set a custom icon
    setOpenIcon(icon);
    setClosedIcon(icon);
    setLeafIcon(icon);
         return this;
    *treeNode.java
    *this is the class to represent a node
    import javax.swing.*;
    import javax.swing.tree.*;
    import java.util.*;
    import java.net.*;
    * Class used to hold information about a web site that has
    * been searched by the spider class
    public class treeNode
    *Url from the WebSpiderController Class
    *that is currently being processed
    public String msg;
    treeNode(String urlText)
         msg = urlText;
    String getUrlText()
         return msg;
    //gui.java
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.tree.*;
    import java.net.*;
    import java.io.*;
    import java.util.*;
    public class gui extends JFrame implements Runnable
         *declare variable, boolean
         *thread, a object and a center
         *pane
         protected URL urlInput;
         protected Thread bgThread;
         protected boolean run = false;
         protected WebSpider webSpider;
         public gui()
              *create the gui here
              setTitle("Testing Tool");
         setSize(600,600);
         //add Buttons to the tool bar
         start.setText("Start");
         start.setActionCommand("Start");
         toolBar.add(start);
         ButtonListener startListener = new ButtonListener();
              start.addActionListener(startListener);
              cancel.setText("Cancel");
         cancel.setActionCommand("Cancel");
         toolBar.add(cancel);
         ButtonListener cancelListener = new ButtonListener();
              cancel.addActionListener(cancelListener);
              close.setText("Close");
         close.setActionCommand("Close");
         toolBar.add(close);
         ButtonListener closeListener = new ButtonListener();
              close.addActionListener(closeListener);
              //creat a simple form
              urlLabel.setText("Enter URL:");
              urlLabel.setBounds(100,36,288,24);
              formTab.add(urlLabel);
              url.setBounds(170,36,288,24);
              formTab.add(url);
              current.setText("Currently Processing: ");
              current.setBounds(100,80,288,24);
              formTab.add(current);
         //add scroll bars to the error messages screen and website structure
         errorPane.setAutoscrolls(true);
         errorPane.setHorizontalScrollBarPolicy(javax.swing.
         ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
         errorPane.setVerticalScrollBarPolicy(javax.swing.
         ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
         errorPane.setOpaque(true);
         errorTab.add(errorPane);
         errorPane.setBounds(0,0,580,490);
         errorText.setEditable(false);
         errorPane.getViewport().add(errorText);
         errorText.setBounds(0,0,600,550);
         treePane.setAutoscrolls(true);
         treePane.setHorizontalScrollBarPolicy(javax.swing.
         ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
         treePane.setVerticalScrollBarPolicy(javax.swing.
         ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
         treePane.setOpaque(true);
         treeTab.add(treePane);
         treePane.setBounds(0,0,580,490);
         treeText.setEditable(false);
         treePane.getViewport().add(treeText);
         treeText.setBounds(0,0,600,550);
         //create the tabbed window           
    centerPane.setBorder(new javax.swing.border.EtchedBorder());
    formTab.setLayout(null);
    errorTab.setLayout(null);
    treeTab.setLayout(null);
    centerPane.addTab("Search Parameters", formTab);
    centerPane.addTab("Error Messages", errorTab);
    centerPane.addTab("Website Structure", treeTab);
              //add the tool bar and tabbed pane
              getContentPane().add(toolBar, java.awt.BorderLayout.NORTH);
    getContentPane().add(centerPane, java.awt.BorderLayout.CENTER);                    
              *create the tool bar pane, a center pane, add the buttons,
              *labels, tabs, a text field for user input here
              javax.swing.JPanel toolBar = new javax.swing.JPanel();
              javax.swing.JButton start = new javax.swing.JButton();
              javax.swing.JButton cancel = new javax.swing.JButton();
              javax.swing.JButton close = new javax.swing.JButton();      
              javax.swing.JTabbedPane centerPane = new javax.swing.JTabbedPane();
              javax.swing.JPanel formTab = new javax.swing.JPanel();
              javax.swing.JLabel urlLabel = new javax.swing.JLabel();
              javax.swing.JLabel current = new javax.swing.JLabel();
              javax.swing.JTextField url = new javax.swing.JTextField();
              javax.swing.JPanel errorTab = new javax.swing.JPanel();
              javax.swing.JTextArea errorText = new javax.swing.JTextArea();
              javax.swing.JScrollPane errorPane = new javax.swing.JScrollPane();
              javax.swing.JPanel treeTab = new javax.swing.JPanel();
              javax.swing.JTextArea treeText = new javax.swing.JTextArea();
              javax.swing.JScrollPane treePane = new javax.swing.JScrollPane();
              javax.swing.JTree searchTree = new javax.swing.JTree();
              *show the gui
              public static void main(String args[])
              (new gui()).setVisible(true);
         *listen for the button presses and set the
         *boolean flag depending on which button is pressed
         class ButtonListener implements ActionListener
              public void actionPerformed(ActionEvent event)
                   Object object = event.getSource();
                   if (object == start)
                        run = true;
                        startActionPerformed(event);
                   if (object == cancel)
                        run = false;
                        startActionPerformed(event);
                   if (object == close)
                        System.exit(0);
         *this method is called when the start or
         *cancel button is pressed.
         void startActionPerformed (ActionEvent event)
              if (run == true && bgThread == null)
                   bgThread = new Thread(this);
                   bgThread.start();
              if (run == false && bgThread != null)
                   webSpider.cancel();
         *this mehtod will start the background thred.
         *the background thread is required so that the
         *GUI is still displayed
         public void run()
              try
                   webSpider = new WebSpider(this);
                   webSpider.clear();
                   urlInput = new URL(url.getText());
                   webSpider.addURL(urlInput);
                   webSpider.run();
                   bgThread=null;
              catch (MalformedURLException e)
                   addressError addErr = new addressError();
                   addErr.addMsg = "URL ERROR - PLEASE CHECK";
                   SwingUtilities.invokeLater(addErr);
              *this method is called by the web spider
              *once a url is found. Validation of navigation
              *happens here.
              public boolean urlFound(URL urlInput,URL url)
                   CurrentlyProcessing pro = new CurrentlyProcessing();
              pro.msg = url.toString();
              SwingUtilities.invokeLater(pro);
              if (!testLink(url))
                        navigationError navErr = new navigationError();
                        navErr.navMsg = "Broken Link "+url+" caused on "+urlInput+"\n";
                        return false;
              if (!url.getHost().equalsIgnoreCase(urlInput.getHost()))
                   return false;
              else
                   return true;
              *this method is called internally to check
         *that a link works
              protected boolean testLink(URL url)
              try
                   URLConnection connection = url.openConnection();
                   connection.connect();
                   return true;
              catch (IOException e)
                   return false;
         *this method is called when an error is
         *found.
              public void URLError(URL url)
              *this method is called when an email
              *address is found
              public void emailFound(String email)
              /*this method will update any errors found inc
              *address errors and broken links
              class addressError implements Runnable
                   public String addMsg;
                   public void run()
                        errorText.append(addMsg);
                        current.setText("Currently Processing: "+ addMsg);
              class navigationError implements Runnable
                   public String navMsg;
                   public void run()
                        errorText.append(navMsg);
              *this method will update the currently
              *processing field on the GUI
              class CurrentlyProcessing implements Runnable
              public String msg;
              public void run()
                   current.setText("Currently Processing: " + msg );
    //webspider.java
    import java.util.*;
    import java.net.*;
    import java.io.*;
    import javax.swing.text.*;
    import javax.swing.text.html.*;
    import javax.swing.tree.*;
    import javax.swing.*;
    *this class implements the spider.
    public class WebSpider extends HTMLEditorKit
         *make a collection of the URL's
         protected Collection urlErrors = new ArrayList(3);
         protected Collection urlsWaiting = new ArrayList(3);
         protected Collection urlsProcessed = new ArrayList(3);
         //report URL's to this class
         protected gui report;
         *this flag will indicate whether the process
         *is to be cancelled
         protected boolean cancel = false;
         *The constructor
         *report the urls to the wui class
         public WebSpider(gui report)
         this.report = report;
         *get the urls from the above declared
         *collections
         public Collection getUrlErrors()
         return urlErrors;
         public Collection getUrlsWaiting()
         return urlsWaiting;
         public Collection getUrlsProcessed()
         return urlsProcessed;
         * Clear all of the collections.
         public void clear()
         getUrlErrors().clear();
         getUrlsWaiting().clear();
         getUrlsProcessed().clear();
         *Set a flag that will cause the begin
         *method to return before it is done.
         public void cancel()
         cancel = true;
         *add the entered url for porcessing
         public void addURL(URL url)
         if (getUrlsWaiting().contains(url))
              return;
         if (getUrlErrors().contains(url))
              return;
         if (getUrlsProcessed().contains(url))
              return;
         /*WRITE TO LOG FILE*/
         log("Adding to workload: " + url );
         getUrlsWaiting().add(url);
         *process a url
         public void processURL(URL url)
         try
              /*WRITE TO LOGFILE*/
              log("Processing: " + url );
              // get the URL's contents
              URLConnection connection = url.openConnection();
              if ((connection.getContentType()!=null) &&
         !connection.getContentType().toLowerCase().startsWith("text/"))
              getUrlsWaiting().remove(url);
              getUrlsProcessed().add(url);
              log("Not processing because content type is: " +
         connection.getContentType() );
                   return;
         // read the URL
         InputStream is = connection.getInputStream();
         Reader r = new InputStreamReader(is);
         // parse the URL
         HTMLEditorKit.Parser parse = new HTMLParse().getParser();
         parse.parse(r,new Parser(url),true);
    catch (IOException e)
         getUrlsWaiting().remove(url);
         getUrlErrors().add(url);
         log("Error: " + url );
         report.URLError(url);
         return;
    // mark URL as complete
    getUrlsWaiting().remove(url);
    getUrlsProcessed().add(url);
    log("Complete: " + url );
    *start the spider
    public void run()
    cancel = false;
    while (!getUrlsWaiting().isEmpty() && !cancel)
         Object list[] = getUrlsWaiting().toArray();
         for (int i=0;(i<list.length)&&!cancel;i++)
         processURL((URL)list);
    * A HTML parser callback used by this class to detect links
    protected class Parser extends HTMLEditorKit.ParserCallback
    protected URL urlInput;
    public Parser(URL urlInput)
    this.urlInput = urlInput;
    public void handleSimpleTag(HTML.Tag t,MutableAttributeSet a,int pos)
    String href = (String)a.getAttribute(HTML.Attribute.HREF);
    if((href==null) && (t==HTML.Tag.FRAME))
    href = (String)a.getAttribute(HTML.Attribute.SRC);
    if (href==null)
    return;
    int i = href.indexOf('#');
    if (i!=-1)
    href = href.substring(0,i);
    if (href.toLowerCase().startsWith("mailto:"))
    report.emailFound(href);
    return;
    handleLink(urlInput,href);
    public void handleStartTag(HTML.Tag t,MutableAttributeSet a,int pos)
    handleSimpleTag(t,a,pos); // handle the same way
    protected void handleLink(URL urlInput,String str)
    try
         URL url = new URL(urlInput,str);
    if (report.urlFound(urlInput,url))
    addURL(url);
    catch (MalformedURLException e)
    log("Found malformed URL: " + str);
    *log the information of the spider
    public void log(String entry)
    System.out.println( (new Date()) + ":" + entry );
    I have a seperate class for parseing the HTML. Any help would be greatly appreciated
    mrv

    Hi Sorry to be a pain again,
    I have re worked the gui class so it looks like this now:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.tree.*;
    import javax.swing.event.*;
    import java.net.*;
    import java.io.*;
    import java.util.*;
    public class gui extends JFrame implements Runnable
         *declare variable, boolean
         *thread, a object and a center
         *pane
         protected URL urlInput;
         protected Thread bgThread;
         protected boolean run = false;
         protected WebSpider webSpider;
         public String msgInfo;
         public String brokenUrl;
         public String goodUrl;
         public String deadUrl;
         protected DefaultMutableTreeNode rootNode;
    protected DefaultTreeModel treeModel;
         public gui()
              *create the gui here
              setTitle("Testing Tool");
         setSize(600,600);
         //add Buttons to the tool bar
         start.setText("Start");
         start.setActionCommand("Start");
         toolBar.add(start);
         ButtonListener startListener = new ButtonListener();
              start.addActionListener(startListener);
              cancel.setText("Cancel");
         cancel.setActionCommand("Cancel");
         toolBar.add(cancel);
         ButtonListener cancelListener = new ButtonListener();
              cancel.addActionListener(cancelListener);
              close.setText("Close");
         close.setActionCommand("Close");
         toolBar.add(close);
         ButtonListener closeListener = new ButtonListener();
              close.addActionListener(closeListener);
              //creat a simple form
              urlLabel.setText("Enter URL:");
              urlLabel.setBounds(100,36,288,24);
              formTab.add(urlLabel);
              url.setBounds(170,36,288,24);
              formTab.add(url);
              current.setText("Currently Processing: ");
              current.setBounds(100,80,288,24);
              formTab.add(current);
         //add scroll bars to the error messages screen and website structure
         errorPane.setAutoscrolls(true);
         errorPane.setHorizontalScrollBarPolicy(javax.swing.
         ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
         errorPane.setVerticalScrollBarPolicy(javax.swing.
         ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
         errorPane.setOpaque(true);
         errorTab.add(errorPane);
         errorPane.setBounds(0,0,580,490);
         errorText.setEditable(false);
         errorPane.getViewport().add(errorText);
         errorText.setBounds(0,0,600,550);
         treePane.setAutoscrolls(true);
         treePane.setHorizontalScrollBarPolicy(javax.swing.
         ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
         treePane.setVerticalScrollBarPolicy(javax.swing.
         ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
         treePane.setOpaque(true);
         treeTab.add(treePane);
         treePane.setBounds(0,0,580,490);
         treeText.setEditable(false);
         treePane.getViewport().add(treeText);
         treeText.setBounds(0,0,600,550);
         //JTree
         // NEW CODE
         rootNode = new DefaultMutableTreeNode("Root Node");
         treeModel = new DefaultTreeModel(rootNode);
         treeModel.addTreeModelListener(new MyTreeModelListener());
         tree = new JTree(treeModel);
         tree.setEditable(true);
         tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    tree.setShowsRootHandles(true);
         treeText.add(tree);
         //create the tabbed window           
    centerPane.setBorder(new javax.swing.border.EtchedBorder());
    formTab.setLayout(null);
    errorTab.setLayout(null);
    treeTab.setLayout(null);
    centerPane.addTab("Search Parameters", formTab);
    centerPane.addTab("Error Messages", errorTab);
    centerPane.addTab("Website Structure", treeTab);
              //add the tool bar and tabbed pane
              getContentPane().add(toolBar, java.awt.BorderLayout.NORTH);
    getContentPane().add(centerPane, java.awt.BorderLayout.CENTER);     
              *create the tool bar pane, a center pane, add the buttons,
              *labels, tabs, a text field for user input here
              javax.swing.JPanel toolBar = new javax.swing.JPanel();
              javax.swing.JButton start = new javax.swing.JButton();
              javax.swing.JButton cancel = new javax.swing.JButton();
              javax.swing.JButton close = new javax.swing.JButton();      
              javax.swing.JTabbedPane centerPane = new javax.swing.JTabbedPane();
              javax.swing.JPanel formTab = new javax.swing.JPanel();
              javax.swing.JLabel urlLabel = new javax.swing.JLabel();
              javax.swing.JLabel current = new javax.swing.JLabel();
              javax.swing.JTextField url = new javax.swing.JTextField();
              javax.swing.JPanel errorTab = new javax.swing.JPanel();
              javax.swing.JTextArea errorText = new javax.swing.JTextArea();
              javax.swing.JScrollPane errorPane = new javax.swing.JScrollPane();
              javax.swing.JPanel treeTab = new javax.swing.JPanel();
              javax.swing.JTextArea treeText = new javax.swing.JTextArea();
              javax.swing.JScrollPane treePane = new javax.swing.JScrollPane();
              javax.swing.JTree tree = new javax.swing.JTree();
              *show the gui
              public static void main(String args[])
              (new gui()).setVisible(true);
         *listen for the button presses and set the
         *boolean flag depending on which button is pressed
         class ButtonListener implements ActionListener
              public void actionPerformed(ActionEvent event)
                   Object object = event.getSource();
                   if (object == start)
                        run = true;
                        startActionPerformed(event);
                   if (object == cancel)
                        run = false;
                        startActionPerformed(event);
                   if (object == close)
                        System.exit(0);
         *this method is called when the start or
         *cancel button is pressed.
         void startActionPerformed (ActionEvent event)
              if (run == true && bgThread == null)
                   bgThread = new Thread(this);
                   bgThread.start();
                   //new line of code
                   treeText.addObject(msgInfo);
              if (run == false && bgThread != null)
                   webSpider.cancel();
         *this mehtod will start the background thred.
         *the background thread is required so that the
         *GUI is still displayed
         public void run()
              try
                   webSpider = new WebSpider(this);
                   webSpider.clear();
                   urlInput = new URL(url.getText());
                   webSpider.addURL(urlInput);
                   webSpider.run();
                   bgThread = null;
              catch (MalformedURLException e)
                   addressError addErr = new addressError();
                   addErr.addMsg = "URL ERROR - PLEASE CHECK";
                   SwingUtilities.invokeLater(addErr);
              *this method is called by the web spider
              *once a url is found. Validation of navigation
              *happens here.
              public boolean urlFound(URL urlInput,URL url)
                   CurrentlyProcessing pro = new CurrentlyProcessing();
              pro.msg = url.toString();
              SwingUtilities.invokeLater(pro);
              if (!testLink(url))
                        navigationError navErr = new navigationError();
                        navErr.navMsg = "Broken Link "+url+" caused on "+urlInput+"\n";
                        brokenUrl = url.toString();
                        return false;
              if (!url.getHost().equalsIgnoreCase(urlInput.getHost()))
                   return false;
              else
                   return true;
              *this method is returned if there is no link
              *on a web page, e.g. there us a dead end
              public void urlNotFound(URL urlInput)
                        deadEnd dEnd = new deadEnd();
                        dEnd.dEMsg = "No links on "+urlInput+"\n";
                        deadUrl = urlInput.toString();               
              *this method is called internally to check
         *that a link works
              protected boolean testLink(URL url)
              try
                   URLConnection connection = url.openConnection();
                   connection.connect();
                   goodUrl = url.toString();
                   return true;
              catch (IOException e)
                   return false;
         *this method is called when an error is
         *found.
              public void urlError(URL url)
              *this method is called when an email
              *address is found
              public void emailFound(String email)
              /*this method will update any errors found inc
              *address errors and broken links
              class addressError implements Runnable
                   public String addMsg;
                   public void run()
                        current.setText("Currently Processing: "+ addMsg);
                        errorText.append(addMsg);
              class navigationError implements Runnable
                   public String navMsg;
                   public void run()
                        errorText.append(navMsg);
              class deadEnd implements Runnable
                   public String dEMsg;
                   public void run()
                        errorText.append(dEMsg);
              *this method will update the currently
              *processing field on the GUI
              public class CurrentlyProcessing implements Runnable
                   public String msg;
              //new line
              public String msgInfo = msg;
              public void run()
                   current.setText("Currently Processing: " + msg );
         * NEW CODE
         * NEED THIS CODE SOMEWHERE
         * treeText.addObject(msgInfo);
         public DefaultMutableTreeNode addObject(Object child)
         DefaultMutableTreeNode parentNode = null;
         TreePath parentPath = tree.getSelectionPath();
         if (parentPath == null)
         parentNode = rootNode;
         else
         parentNode = (DefaultMutableTreeNode)
    (parentPath.getLastPathComponent());
         return addObject(parentNode, child, true);
         public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
    Object child)
         return addObject(parent, child, false);
         public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
         Object child,boolean shouldBeVisible)
         DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(child);
         if (parent == null)
         parent = rootNode;
         treeModel.insertNodeInto(childNode, parent, parent.getChildCount());
         if (shouldBeVisible)
         tree.scrollPathToVisible(new TreePath(childNode.getPath()));
              return childNode;
         public class MyTreeModelListener implements TreeModelListener
              public void treeNodesChanged (TreeModelEvent e)
                   DefaultMutableTreeNode node;
                   node = (DefaultMutableTreeNode)
                   (e.getTreePath().getLastPathComponent());
                   try
                        int index = e.getChildIndices()[0];
                        node = (DefaultMutableTreeNode)
                        (node.getChildAt(index));
                   catch (NullPointerException exc)
              public void treeNodesInserted(TreeModelEvent e)
              public void treeStructureChanged(TreeModelEvent e)
              public void treeNodesRemoved(TreeModelEvent e)
    I beleive that this line of code is required:
    treeText.addObject(msgInfo);
    I have placed it where the action events start the spider, but i keep getting this error:
    cannot resolve symbol
    symbol : method addObject (java.lang.String)
    location: class javax.swing.JTextArea
    treeText.addObject(msgInfo);
    Also the jtree is not showing the window that I want it to and I am not too sure why. could you have a look to see why? i think it needs a fresh pair of eyes.
    Many thanks
    MrV

  • PE Node Protection

    Hi,
    Does anyone know of an implemented method to provide PE Node Protection?
    Failover time is key here.
    Network topology has pair of PEs at each site, with each PE connected to a seperate P. The 2 PEs at each site are connected and link protection is in use today for PE-P link failures.
    Thanks Steve

    Thanks for your message.
    You are correct it is FRR link protection and it is pretty quick, for a link failure.
    What I am looking at is PE failure and fast recovery utilising the 2nd PE at that site.
    Regards
    Steve

  • Pdf's Links and Bookmarks

    Hello,
    I know you can add links and bookmarks within a pdf, that will take you to other areas of that particular pdf.  However, I need to put a link or bookmark into a pdf that will allow a user to click on a link in Captivate, Flash, Dreamweaver, etc and be taken directly to that section within the pdf.
    Can you create a link on a website that will take you to a particular spot within a pdf?  Or will it just open the pdf and display the first page, and then the user would have to scroll to that section?
    If this can't be done, what is a good solution?

    Thanks so much!
    Date: Wed, 4 Nov 2009 14:48:45 -0700
    From: [email protected]
    To: [email protected]
    Subject: Pdf's Links and Bookmarks
    It can be done yes.
    It's all explained in the following link:
    http://kb2.adobe.com/cps/317/317300.html
    >

  • SCOM 2012 R2 RU 2 Topology widgets Background image and Nod visualization is missing

    After Updating RU 2 in System center OM 2012 R2 no background image and Nod visualization missing in Topology widgets ?
    Santosh Dharamsale

    You will need to Import the MP Microsoft.SystemCenter.Visualization.Library.mpb.
    For more info., You can refer below link
    http://thoughtsonopsmgr.blogspot.com/2014/04/update-rollup-2-for-scom-2012-r2.html
    Please remember, if you see a post that helped you please click "Vote As Helpful" and if it answered your question, please click "Mark As Answer"
    Mai Ali | My blog: Technical | Twitter:
    Mai Ali

  • Sun Java Application Server - Domain and Node agent stop automatically

    Hi,
    We have installed Sun Java Application server 8.1 in a local zone on Solaris 10. The installation was successful.
    A default domain (domain1) was created. We have deployed a sample application too.
    The problem is that the domain and node-agent stop automatically. And need to be restarted from asadmin start-domain command.
    Not sure why this problem is occurring. One solution given in Sun Java System AS 8.1 EE Troubleshooting Guide was to add these 2 lines in the /etc/inittab file to restart the domain and node-agent whenever the system re-boots.
    das:3:respawn:/opt/SUNWappserver/bin/asadmin start-domain user admin passwordfile /opt/SUNWappserver/password.txt domain1
    das:3:respawn:/opt/SUNWappserver/bin/asadmin start-node-agent user admin passwordfile /opt/SUNWappserver/password.txt node-agent-name
    Pls help me if I can change this inittab file from the local zone and if changing this file has any implications on the other zones on Solaris 10.
    Else is there any other way to resolve this problem?
    Any help would be highly appreciated.
    Thankyou.

    One thing not clear from the post was,
    * when it is going down automatically.
    * Are you facing the same problem even after starting through the asadmin
    * If so, Post the server.log from "domains/logs" during the starup.
    If you want to bring it up with system reboot, You need to have a startup script for that in init.d and have the links to rc2/3.d.

  • Problem with bb link and z10

    hello, i´ve try to connect my z 10 to pc whith bb link and i can t, it stays a lot of time thinking, and nothing. how can i do a  backup copy of my z 10 whitout bb link, and why in the divice bb protect don´t allow backups?

    Hi pleandro,
    Can you provide a bit more information please so I can better assist?
    What version of BlackBerry Link do you have installed and what version of Windows OS do you have?
    Are you connecting via usb or Wi-Fi?
    Have you tried using different usb cables and usb ports?
    Are you signed into BlackBerry Link with the same BlackBerry ID you are using on your BlackBerry Z10 smartphone?
    I look forward to your response.
    -FS
    Come follow your BlackBerry Technical Team on Twitter! @BlackBerryHelp
    Be sure to click Kudos! for those who have helped you.
    Click Solution? for posts that have solved your issue(s)!

  • [svn] 4235: Fix for - Links and type information missing for air.update. event events in @event listings

    Revision: 4235
    Author: [email protected]
    Date: 2008-12-04 13:02:39 -0800 (Thu, 04 Dec 2008)
    Log Message:
    Fix for - Links and type information missing for air.update.event events in @event listings
    Also adding support for multiple @event for a method.
    QE Notes: None
    Doc Notes: None
    Bugs: SDK-18319
    tests: checkintests
    Ticket Links:
    http://bugs.adobe.com/jira/browse/SDK-18319
    Modified Paths:
    flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/asdoc/AsDocUtil.java
    flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/asdoc/ClassTable.java
    flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/asdoc/DocComment.java
    flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/asdoc/TopLevelClassesGenerator.ja va

    Hi All,
    I have sorted out the problem and this is fixed now.
    Regards,
    Ajay Kunde

  • Eigrp - How to modify Admin distance for redistributing connected links and over WAN

    We have a single EIGRP domain 101 across 2 locations (A and B) separated by a WAN link. Each location has a number of L3 switches at the IDF behind the router which has  the L3 vlans VL1, VL2 etc. We run eigrp 101 across all the switches and on the routers but we dont advertise any of the L3 vlans on them and we do redistribute static and connected for the static and the vlans to be distributed on eigrp.
    Qn
    1. How do i reduce the admin distance of the directly connected vlan on IDF on our core switch. ie. Vl1 and Vl2 that are distributed via connected has a admin distance of 170 locally as the other switches sees that as External without having to advertise the networks individually on each switch.  
    2. Is that possible to increase the admin distance over the WAN link without having to create a 2nd eigrp domain. ie.. Add a admin distance of say 50 over the WAN link  and that way devices on both sides do see that there is a 130 distance for the remote side and 90 for local for admin distance.
    Why?
    I am trying to separate two locations and i don't think we will be able to create an additional domain and i am trying to see alternate methods of achieving this.  
    Additional info-
    The design i mentioned has 2 locations with a WAN connection and i have mixed (90/170) distance based on where the routes are coming(eigrp/connected/static) from eventhough  everything is within the same network.  We only have 1 Eigrp network 101 and was looking to alter the AD for just connected if at all possible.
    Assuming i put in all the routes into the network how can i make site 2 see the site 1 network with a larger admin distance and 1 to 2 with a larger admin distance while not altering the admin distance within the local site.
    Underlying reason: We are getting a MPLS link(lower bandwidth) connecting to site 3,4 and 5 at both sites and wanted to clear the internal routing first before i can add them or redistribute them into bgp.

    If these two sites are connected via a P2P link and you are exchanging EIGRP routes across it then you need to be aware of what you redistribute into BGP because each site will know about it's own subnets but also the other sites subnets.
    If you just redistribute all EIGRP at both sites then it's a lottery as to which MPLS connection the non EIGRP sites use.
    So you either need to -
    1) when you redistribute EIGRP at each site into BGP use a route map and only allow the local networks for that site
    or
    2) if you want each of the EIGRP sites to back each other's MPLS connection up you could have them both advertise out all networks ie. their own and the other EIGRP site's networks but modify the BGP attributes of the non local networks so they are least preferred.
    You still want to use a route map to ensure only the local and other EIGRP sites network are redistributed because remember you are also receiving BGP routes from the non EIGRP sites and redistributing these into EIGRP at each site and these are exchanged via the P2P link as well.
    It realty depends on what you are trying to do.
    The actual basic redistribution is very straightforward, see this link -
    http://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/113506-failover-eigrp-bgp-00.html
    but you need to decide what you are going to do in terms of EIGRP to BGP advertisements as covered above.
    I'm not trying to make things complicated for you but because you have a P2P link connecting these sites and you are running EIGRP over it then any routes received via BGP will be redistributed into EIGRP and you need to make sure they are then not redistributed back into BGP on the other site router.
    Jon

  • How do find Process name and Node name in a workflow ?

    Hi,
    For logging exceptions, how do I elegantly find the
    process name and node name in a workflow.
    Thanks
    -Anil

    The service location of the process is available on the interface returned
    by
    context.getService() in the process. That contains the full process path
    (including process project name).
    On the node, I don't know...
    Robert
    "Anil Varma" <[email protected]> wrote in message
    news:31361182.1091122588490.JavaMail.root@jserv5...
    Hi,
    For logging exceptions, how do I elegantly find the
    process name and node name in a workflow.
    Thanks
    -Anil

  • FRR NNHOP node protection with multiple protected nodes?

    Hello
    Is it possible to deploy a Fast Reroute (FRR) backup tunnel terminating in a node several next-hops downstream instead of just one?
    All the examples i found in the documentation about FRR Node Protection, -or NNHOP-, always illustrates one protected node only. My question is if I can terminate the backup tunnel far beyond with the aim to include a chain of several protected nodes in between, not just one.
    Thanks in advance

    Hi Albert,
    Are you looking for something similar to path protection?
    http://www.cisco.com/en/US/docs/ios/mpls/configuration/guide/mp_te_path_prot.html
    regards
    Ashish

  • MPLS TE Bandwidth and Priority

    Hi everybody
    Hopefully, everyone is doing great.  I stumbled upon the following link on MPLS TE bandwidth and priority:
    http://blog.ipexpert.com/2009/05/27/mpls-te-bandwidth-and-priority/
    it was a very good read.  But I am left with one question. How does R2 decide which tunnel to drop? In the example, R2 drops tunnel 1, but how does R2 decide which one to drop?
    Thanks and have a great sunday

    Hi Thanveer
    I hope you are doing fine.  Here is what i found  in a book ( traffic engineering with MPLS by Eric, Ajay, great book, still reading it)
    There are two priorities:
    1) set up priority
    2) hold prioritity
    Based on the book the code works this way
    Imagine we have two tunnels already established and are passing through R3
    t1, set up priority 6 hold priority 5
    t2 set up priority 6 hold priority 4
    Let say R3 just receives a RSVP path  request for  a new tunnel, lets call it tunnel 3 with set up priority 4 hold priority 6. This tunnel requires a bandwidth which R3 can not accommodate without dropping one of the established tunnels.
    Router will take t3's set up priority ( 4) and compares it against the current  established tunnel's hold priorities where lower the number means higher the priority. In our example, set up priority of tunnel 3  is 4 and R3  compares it against both hold priorities of established tunnels. R3 then concludes it has to drop t1 to accommodate t3 ( set up priority of tunnel3 is higher than the hold priority of tunnel1)
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++
    what is not cleared is how will router 3 behave if all the established tunnels have same hold priority i.e 4 and a request for a new tunnel i.e t3 comes with the set up priority of 4?
    Not sure if R3 just randomly picks any established tunnel and drops it or there is some move involved process that R3 goes through to decide which tunnel gets dropped.
    Lets hope somebody way smarter than me might chime in :)
    Have a great weekend

  • Linked List - nodes

    Hi,
    In a lecture a couple of weeks ago, we began the topic of reference-based lists. I copied the attached
    code off the board. I'm now trying to utilize the code by creating a public class Node. However, the constructors don't seem to make much sense. I was too busy writing down the information to pay much attention at the time. My book doesn't seem to address this...
    1) in the first constructor: item = null; I'm declaring item initially as an integer, but the constructor is trying to attach a null to item. I think the intent is to create a node that initially has both info and link as nulls.
    2) in the third constructor: link = Node; Is this possible? I'm not what this will do.
    And finally, the second and third constructors are using the same name and parameter, so there is a conflict. I don't know how to resolve this.
    Thanks in advance for any help...
    aiki
    public class Node {
              public int info;
              public Node link;
              public Node(){
                   info = null;
                   link = null;
              public Node (int data){
                   info = data;
                   link = null;
              public Node (int data){
                   info = data;
                   link = Node;

    public class Node {
        public int info;
        public Node link;
        public Node(){
            // default constructor does nothing.
            // Therefore info and link will get default values.
            // For Objects this will be null
        public Node (int data){
            info = data;
            // don't initialise link. See above
        public Node (int data, Node node){
            // I think you missed the second parameter
            info = data;
            link = node;
    }

  • How to update link and import data of relocated incx file into inca file?

    Subject : <br />how to update link and import data of relocated incx file into inca file.?<br />The incx file was originally part of the inca file and it has been relocated.<br />-------------------<br /><br />Hello All,<br /><br />I am working on InDesignCS2 and InCopyCS2.<br />From indesign I am creating an assignment file as well as incopy files.(.inca and .incx file created through exporing).<br />Now indesign hardcodes the path of the incx files in inca file.So if I put the incx files in different folder then after opening the inca file in InCopy , I am getting the alert stating that " The document doesn't consists of any incopy story" and all the linked story will flag a red question mark icon.<br />So I tried to recreate and update the links.<br />Below is my code for that<br /><br />//code start*****************************<br />//creating kDataLinkHelperBoss<br />InterfacePtr<IDataLinkHelper> dataLinkHelper(static_cast<IDataLinkHelper*><br />(CreateObject2<IDataLinkHelper>(kDataLinkHelperBoss)));<br /><br />/**<br />The newFileToBeLinkedPath is the path of the incx file which is relocated.<br />And it was previously part of the inca file.<br />eg. earlier it was c:\\test.incx now it is d:\\test.incx<br />*/<br />IDFile newIDFileToBeLinked(newFileToBeLinkedPath);<br /><br />//create the datelink<br />IDataLink * dlk = dataLinkHelper->CreateDataLink(newIDFileToBeLinked);<br /><br />NameInfo name;<br />PMString type;<br />uint32 fileType;<br /><br />dlk->GetNameInfo(&name,&type,&fileType);<br /><br />//relink the story     <br />InterfacePtr<ICommand> relinkCmd(CmdUtils::CreateCommand(kRestoreLinkCmdBoss)); <br /><br />InterfacePtr<IRestoreLinkCmdData> relinkCmdData(relinkCmd, IID_IRESTORELINKCMDDATA);<br /><br />relinkCmdData->Set(database, dataLinkUID, &name, &type, fileType, IDataLink::kLinkNormal); <br /><br />ErrorCode err = CmdUtils::ProcessCommand(relinkCmd); <br /><br />//Update the link now                         <br />InterfacePtr<IUpdateLink> updateLink(dataLinkHelper, UseDefaultIID()); <br />UID newLinkUID; <br />err = updateLink->DoUpdateLink(dl, &newLinkUID, kFullUI); <br />//code end*********************<br /><br />I am able to create the proper link.But the data which is there in the incx file is not getting imported in the linked story.But if I modify the newlinked story from the inca file,the incx file will be getting update.(all its previous content will be deleted.)<br />I tried using <br />Utils<IInCopyWorkflow>()->ImportStory()<br /> ,But its import the incx file in xml format.<br /><br />What is the solution of this then?<br />Kindly help me as I am terribly stuck since last few days.<br /><br />Thanks and Regards,<br />Yopangjo

    >
    I can say that anybody with
    no experience could easily do an export/import in
    MSSQLServer 2000.
    Anybody with no experience should not mess up my Oracle Databases !

  • Getting links and its names from a html file

    Hi everyone
    My problem about the a getting links with name from a html file. For example
    &#304;n a web page in this site ?SUN? when use click SUN the browser open http://java.sun.com
    &#304; want both of them, so the links and name. I can succeeded the get link but i don t know how to get the link name.
    For example :
    <B>setRightComponent(Component)</B>
    &#304;n this code segment i want to get B tag. But how i don t know. To get A tag i used this code
    List result = new ArrayList();
    try {
    // Create a reader on the HTML content
    URL url = new URI(uriStr).toURL();
    URLConnection conn = url.openConnection();
    Reader rd = new InputStreamReader(conn.getInputStream());
    // Parse the HTML
    EditorKit kit = new HTMLEditorKit();
    HTMLDocument doc = (HTMLDocument)kit.createDefaultDocument();
    kit.read(rd, doc, 0);
    // Find all the A elements in the HTML document
    HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);
    while (it.isValid()) {
    SimpleAttributeSet s = (SimpleAttributeSet)it.getAttributes();
    String link = (String)s.getAttribute(HTML.Attribute.HREF);
    if (link != null) {
    result.add(link);
    it.next();
    &#304; can use B tag but i don t know hot to get its value because it has no prefix such as HREF....
    i am sorry if i use a bad explanation style or incorrect word.

    import java.io.*;
    import java.net.*;
    import javax.swing.text.*;
    import javax.swing.text.html.*;
    class GetLinks
        public static void main(String[] args)
            throws Exception
            // Create a reader on the HTML content
            Reader reader = getReader( args[0] );
            // Parse the HTML
            EditorKit kit = new HTMLEditorKit();
            HTMLDocument doc = (HTMLDocument)kit.createDefaultDocument();
            doc.putProperty("IgnoreCharsetDirective", Boolean.TRUE);
            kit.read(reader, doc, 0);
            // Find all the A elements in the HTML document
            HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);
            while (it.isValid())
                SimpleAttributeSet s = (SimpleAttributeSet)it.getAttributes();
                String href = (String)s.getAttribute(HTML.Attribute.HREF);
                int start = it.getStartOffset();
                int end = it.getEndOffset();
                String text = doc.getText(start, end - start);
                System.out.println( href + " : " + text );
                it.next();
        // If 'uri' begins with "http:" treat as a URL,
        // otherwise, treat as a local file.
        static Reader getReader(String uri)
            throws IOException
            // Retrieve from Internet.
            if (uri.startsWith("http:"))
                URLConnection conn = new URL(uri).openConnection();
                return new InputStreamReader(conn.getInputStream());
            // Retrieve from file.
            else
                return new FileReader(uri);
    }

Maybe you are looking for

  • Can I Re-Associate my iPad with my Apple ID?

    Long story short I had a problem with my Apple ID when re-downloading my music so I contacted iTunes support and they removed my iPad from my Associated devices in my Apple ID, can I Re-Associate my iPad with my Apple ID? I can still download all my

  • Slow screen redraw

    I am finding the same problem with CS6 that was present in CS5 on my computers (PC, Windows 7, 64-bit, 16 gig ram): when I have more than 40 pages of text with multiple text boxes ( for running annotations), the screen rewrite gets slower and slower.

  • Can the screen on my i phone 4s be replaced

    Can the I phone 4s screen be replaced, I have contacted Apple who say it cannot be replaced because of the technicality of the phone, apparently they will replace/give me a whole new phone for £139.99 upon attending a 'genius' appointment? Just a bit

  • App store shows new update for program I did not purchase

    App store shows new update for program I did not purchase. This is "CodeBox". When I push button to download update it shows "uknown error". For normal other updates - "update all" not working anymore. How to delete this line from updates section now

  • Trouble using itunes on different computers at home

    How can I get all my music from one computer on to another. Any time I try to sync my ipod it wants to wipe wants currently on my file.