[Xorp-cvs] SF.net SVN: xorp:[11662] trunk/xorp

bms_fbsd at users.sourceforge.net bms_fbsd at users.sourceforge.net
Thu Dec 3 14:10:52 PST 2009


Revision: 11662
          http://xorp.svn.sourceforge.net/xorp/?rev=11662&view=rev
Author:   bms_fbsd
Date:     2009-12-03 22:10:51 +0000 (Thu, 03 Dec 2009)

Log Message:
-----------
First Boost refactoring pass.

Use boost::noncopyable across the tree, instead of
declaring copy and assignment operations as private.

No functional changes.

Modified Paths:
--------------
    trunk/xorp/bgp/bgp_varrw.hh
    trunk/xorp/bgp/path_attribute.hh
    trunk/xorp/bgp/subnet_route.hh
    trunk/xorp/fea/data_plane/control_socket/click_socket.hh
    trunk/xorp/fea/data_plane/control_socket/netlink_socket.hh
    trunk/xorp/fea/data_plane/control_socket/routing_socket.hh
    trunk/xorp/fea/iftree.hh
    trunk/xorp/fea/io_ip_manager.hh
    trunk/xorp/fea/io_link_manager.hh
    trunk/xorp/fea/io_tcpudp_manager.hh
    trunk/xorp/libxipc/finder.hh
    trunk/xorp/libxipc/finder_client.cc
    trunk/xorp/libxipc/finder_tcp.hh
    trunk/xorp/libxipc/xrl_cmd_map.hh
    trunk/xorp/libxipc/xrl_pf.hh
    trunk/xorp/libxipc/xrl_pf_stcp.cc
    trunk/xorp/libxorp/asyncio.hh
    trunk/xorp/libxorp/buffered_asyncio.hh
    trunk/xorp/libxorp/eventloop.hh
    trunk/xorp/libxorp/safe_callback_obj.hh
    trunk/xorp/libxorp/selector.hh
    trunk/xorp/libxorp/task.hh
    trunk/xorp/libxorp/timer.hh
    trunk/xorp/policy/backend/instruction.hh
    trunk/xorp/policy/backend/iv_exec.hh
    trunk/xorp/policy/backend/policy_filter.hh
    trunk/xorp/policy/backend/policy_filters.hh
    trunk/xorp/policy/backend/policy_instr.hh
    trunk/xorp/policy/backend/policy_redist_map.hh
    trunk/xorp/policy/backend/set_manager.hh
    trunk/xorp/policy/backend/single_varrw.hh
    trunk/xorp/policy/backend/term_instr.hh
    trunk/xorp/policy/code_list.hh
    trunk/xorp/policy/common/element.hh
    trunk/xorp/policy/configuration.hh
    trunk/xorp/policy/dependency.hh
    trunk/xorp/policy/node.hh
    trunk/xorp/policy/policy_list.hh
    trunk/xorp/policy/policy_statement.hh
    trunk/xorp/policy/protocol_map.hh
    trunk/xorp/policy/semantic_varrw.hh
    trunk/xorp/policy/source_match_code_generator.hh
    trunk/xorp/policy/term.hh
    trunk/xorp/policy/var_map.hh
    trunk/xorp/policy/visitor_semantic.hh
    trunk/xorp/rib/redist_policy.hh
    trunk/xorp/rib/rib.hh
    trunk/xorp/rib/rt_tab_redist.hh
    trunk/xorp/rip/output.hh
    trunk/xorp/rip/output_table.hh
    trunk/xorp/rip/output_updates.hh
    trunk/xorp/rip/redist.hh
    trunk/xorp/rip/route_db.hh
    trunk/xorp/rip/route_entry.hh
    trunk/xorp/rip/system.hh
    trunk/xorp/rip/tools/common.hh
    trunk/xorp/rip/xrl_port_manager.hh
    trunk/xorp/rtrmgr/op_commands.hh

Modified: trunk/xorp/bgp/bgp_varrw.hh
===================================================================
--- trunk/xorp/bgp/bgp_varrw.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/bgp/bgp_varrw.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -35,9 +35,13 @@
  *
  * If the route is modified, the user is responsible for retrieving the
  * filtered message and deleting it.
+ *
+ * Non-copyable due to inheritance from VarRW<A>.
  */
 template <class A>
-class BGPVarRW : public SingleVarRW {
+class BGPVarRW :
+    public SingleVarRW
+{
 public:
     enum {
 	VAR_NETWORK4 = VAR_PROTOCOL,

Modified: trunk/xorp/bgp/path_attribute.hh
===================================================================
--- trunk/xorp/bgp/path_attribute.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/bgp/path_attribute.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -33,6 +33,8 @@
 #include <set>
 #include <vector>
 
+#include <boost/noncopyable.hpp>
+
 #include <openssl/md5.h>
 
 #include "exceptions.hh"	// for CorruptMessage exception
@@ -96,7 +98,9 @@
 // MAX_ATTRIBUTE must contain the largest attribute number from the enum above
 #define MAX_ATTRIBUTE 20
 
-class PathAttribute {
+class PathAttribute :
+    public boost::noncopyable
+{
 public:
     enum Flags {
 	Optional	= 0x80,
@@ -253,9 +257,7 @@
     uint8_t	_type;
 
 private:
-    PathAttribute();	// forbidden
-    PathAttribute(const PathAttribute &); // forbidden
-    PathAttribute& operator=(const PathAttribute &); // forbidden
+    PathAttribute();	// Not directly constructible.
 };
 
 
@@ -283,8 +285,6 @@
 
     bool encode(uint8_t* buf, size_t &wire_size, const BGPPeerData* peerdata) const;
 
-
-protected:
 private:
     OriginType	_origin;
 };
@@ -312,8 +312,6 @@
 
     bool encode(uint8_t* buf, size_t &wire_size, const BGPPeerData* peerdata) const;
 
-
-protected:
 private:
     ASPath *_as_path;
 };
@@ -340,7 +338,6 @@
 
     bool encode(uint8_t* buf, size_t &wire_size, const BGPPeerData* peerdata) const;
 
-protected:
 private:
     AS4Path *_as_path;
 };
@@ -366,7 +363,6 @@
 
     bool encode(uint8_t* buf, size_t &wire_size, const BGPPeerData* peerdata) const;
 
-protected:
 private:
     A _next_hop;
 };
@@ -391,7 +387,6 @@
 
     bool encode(uint8_t* buf, size_t &wire_size, const BGPPeerData* peerdata) const;
 
-protected:
 private:
     uint32_t _med;	// XXX stored in host format!
 };
@@ -418,7 +413,6 @@
 
     bool encode(uint8_t* buf, size_t &wire_size, const BGPPeerData* peerdata) const;
 
-protected:
 private:
     uint32_t _localpref;
 
@@ -437,7 +431,6 @@
 
     bool encode(uint8_t* buf, size_t &wire_size, const BGPPeerData* peerdata) const;
 
-protected:
 private:
 };
 
@@ -455,7 +448,6 @@
 
     bool encode(uint8_t* buf, size_t &wire_size, const BGPPeerData* peerdata) const;
 
-protected:
 private:
     IPv4 _speaker;
     AsNum _as;
@@ -475,7 +467,6 @@
 
     bool encode(uint8_t* buf, size_t &wire_size, const BGPPeerData* peerdata) const;
 
-protected:
 private:
     IPv4 _speaker;
     AsNum _as;
@@ -501,7 +492,6 @@
 
     bool encode(uint8_t* buf, size_t &wire_size, const BGPPeerData* peerdata) const;
 
-protected:
 private:
     set <uint32_t> _communities;
 };
@@ -522,7 +512,6 @@
 
     bool encode(uint8_t* buf, size_t &wire_size, const BGPPeerData* peerdata) const;
 
-protected:
 private:
     IPv4 _originator_id;	
 };
@@ -543,7 +532,6 @@
 
     bool encode(uint8_t* buf, size_t &wire_size, const BGPPeerData* peerdata) const;
 
-protected:
 private:
     list <IPv4> _cluster_list;
 };
@@ -581,7 +569,6 @@
     bool encode(uint8_t* buf, size_t &wire_size, 
 		const BGPPeerData* peerdata) const;
 
-protected:
 private:
 
     Afi _afi;			// Address Family Identifier.
@@ -617,7 +604,6 @@
     bool encode(uint8_t* buf, size_t &wire_size, 
 		const BGPPeerData* peerdata) const;
 
-protected:
 private:
 
     Afi _afi;			// Address Family Identifier.
@@ -638,7 +624,6 @@
     bool encode(uint8_t* buf, size_t &wire_size, 
 		const BGPPeerData* peerdata) const;
 
-protected:
 private:
     // storage for information in the attribute.
 

Modified: trunk/xorp/bgp/subnet_route.hh
===================================================================
--- trunk/xorp/bgp/subnet_route.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/bgp/subnet_route.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -625,10 +625,10 @@
 	if (_metadata.bump_refcount(delta))
 	    delete this;
     }
-    //prevent accidental use of default assignment operator
+
+    // Copyable, but not assignable.
     const SubnetRoute<A>& operator=(const SubnetRoute<A>&);
 
-
     /**
      * _net is the subnet (address and prefix) for this route.
      */

Modified: trunk/xorp/fea/data_plane/control_socket/click_socket.hh
===================================================================
--- trunk/xorp/fea/data_plane/control_socket/click_socket.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/fea/data_plane/control_socket/click_socket.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -28,6 +28,8 @@
 #include "libxorp/exceptions.hh"
 #include "libxorp/ipvx.hh"
 
+#include <boost/noncopyable.hpp>
+
 class ClickSocketObserver;
 struct ClickSocketPlumber;
 class RunCommand;
@@ -37,7 +39,9 @@
  * on the socket to ClickSocketObservers.  The ClickSocket hooks itself
  * into the EventLoop and activity usually happens asynchronously.
  */
-class ClickSocket {
+class ClickSocket :
+    public boost::noncopyable
+{
 public:
     ClickSocket(EventLoop& eventloop);
     ~ClickSocket();
@@ -490,9 +494,6 @@
     void user_click_command_done_cb(RunCommand* run_command, bool success,
 				    const string& error_msg);
 
-    ClickSocket& operator=(const ClickSocket&);		// Not implemented
-    ClickSocket(const ClickSocket&);			// Not implemented
-
 private:
     static const size_t CLSOCK_BYTES = 8*1024; // Initial guess at msg size
 

Modified: trunk/xorp/fea/data_plane/control_socket/netlink_socket.hh
===================================================================
--- trunk/xorp/fea/data_plane/control_socket/netlink_socket.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/fea/data_plane/control_socket/netlink_socket.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -27,6 +27,8 @@
 #include "libxorp/eventloop.hh"
 #include "libxorp/exceptions.hh"
 
+#include <boost/noncopyable.hpp>
+
 class NetlinkSocketObserver;
 struct NetlinkSocketPlumber;
 
@@ -35,7 +37,9 @@
  * on the socket to NetlinkSocketObservers.  The NetlinkSocket hooks itself
  * into the EventLoop and activity usually happens asynchronously.
  */
-class NetlinkSocket {
+class NetlinkSocket :
+    public boost::noncopyable
+{
 public:
     NetlinkSocket(EventLoop& eventloop);
     ~NetlinkSocket();
@@ -190,9 +194,6 @@
      */
     void io_event(XorpFd fd, IoEventType sm);
 
-    NetlinkSocket& operator=(const NetlinkSocket&);	// Not implemented
-    NetlinkSocket(const NetlinkSocket&);		// Not implemented
-
     static const size_t NETLINK_SOCKET_BYTES = 8*1024;	// Initial guess at msg size
 
     EventLoop&	 _eventloop;

Modified: trunk/xorp/fea/data_plane/control_socket/routing_socket.hh
===================================================================
--- trunk/xorp/fea/data_plane/control_socket/routing_socket.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/fea/data_plane/control_socket/routing_socket.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -27,6 +27,8 @@
 #include "libxorp/eventloop.hh"
 #include "libxorp/exceptions.hh"
 
+#include <boost/noncopyable.hpp>
+
 class RoutingSocketObserver;
 struct RoutingSocketPlumber;
 
@@ -35,7 +37,9 @@
  * on the socket to RoutingSocketObservers.  The RoutingSocket hooks itself
  * into the EventLoop and activity usually happens asynchronously.
  */
-class RoutingSocket {
+class RoutingSocket :
+    public boost::noncopyable
+{
 public:
     RoutingSocket(EventLoop& eventloop);
     ~RoutingSocket();
@@ -125,9 +129,6 @@
      */
     void io_event(XorpFd fd, IoEventType type);
 
-    RoutingSocket& operator=(const RoutingSocket&);	// Not implemented
-    RoutingSocket(const RoutingSocket&);		// Not implemented
-
 private:
     static const size_t ROUTING_SOCKET_BYTES = 8*1024;	// Initial guess at msg size
 

Modified: trunk/xorp/fea/iftree.hh
===================================================================
--- trunk/xorp/fea/iftree.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/fea/iftree.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -27,19 +27,22 @@
 #include <string>
 #include <set>
 
+#include <boost/noncopyable.hpp>
+
 #include "libxorp/ipv4.hh"
 #include "libxorp/ipv6.hh"
 #include "libxorp/mac.hh"
 
 class IPvX;
 
-
 /**
  * Base class for FEA configurable items where the modifications need
  * to be held over and propagated later, ie changes happen during a
  * transaction but are propagated during the commit.
  */
-class IfTreeItem {
+class IfTreeItem :
+    public boost::noncopyable
+{
 public:
     IfTreeItem() : _st(CREATED), _soft(false) {}
     virtual ~IfTreeItem() {}
@@ -534,7 +537,9 @@
 /**
  * FEA class for holding physical interface state.
  */
-class IfTreeInterface : public IfTreeItem {
+class IfTreeInterface :
+    public IfTreeItem
+{
 public:
     typedef map<const string, IfTreeVif*> VifMap;
     typedef set<Mac>			  MacSet;
@@ -765,9 +770,6 @@
     string str() const;
 
 private:
-    IfTreeInterface(const IfTreeInterface&);		  // Not implemented
-    IfTreeInterface& operator=(const IfTreeInterface&);	  // Not implemented
-
     IfTree&	_iftree;
     const string _ifname;
     uint32_t	_pif_index;
@@ -789,7 +791,9 @@
 /**
  * FEA class for virtual (logical) interface state.
  */
-class IfTreeVif : public IfTreeItem {
+class IfTreeVif :
+    public IfTreeItem
+{
 public:
     typedef map<const IPv4, IfTreeAddr4*> IPv4Map;
     typedef map<const IPv6, IfTreeAddr6*> IPv6Map;
@@ -999,9 +1003,6 @@
     string str() const;
 
 private:
-    IfTreeVif(const IfTreeVif&);		// Not implemented
-    IfTreeVif& operator=(const IfTreeVif&);	// Not implemented
-
     IfTreeInterface& _iface;
     const string _vifname;
 
@@ -1025,7 +1026,9 @@
 /**
  * Class for holding an IPv4 interface address and address related items.
  */
-class IfTreeAddr4 : public IfTreeItem {
+class IfTreeAddr4 :
+    public IfTreeItem
+{
 public:
     IfTreeAddr4(const IPv4& addr)
 	: IfTreeItem(),
@@ -1129,9 +1132,6 @@
     string str() const;
 
 private:
-    IfTreeAddr4(const IfTreeAddr4&);		// Not implemented
-    IfTreeAddr4& operator=(const IfTreeAddr4&);	// Not implemented
-
     IPv4	_addr;
 
     bool 	_enabled;
@@ -1148,7 +1148,8 @@
 /**
  * Class for holding an IPv6 interface address and address related items.
  */
-class IfTreeAddr6 : public IfTreeItem
+class IfTreeAddr6 :
+    public IfTreeItem
 {
 public:
     IfTreeAddr6(const IPv6& addr)
@@ -1222,9 +1223,6 @@
     string str() const;
 
 private:
-    IfTreeAddr6(const IfTreeAddr6&);		// Not implemented
-    IfTreeAddr6& operator=(const IfTreeAddr6&);	// Not implemented
-
     IPv6	_addr;
 
     bool 	_enabled;

Modified: trunk/xorp/fea/io_ip_manager.hh
===================================================================
--- trunk/xorp/fea/io_ip_manager.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/fea/io_ip_manager.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -26,6 +26,7 @@
 #include <vector>
 #include <set>
 #include <map>
+#include <boost/noncopyable.hpp>
 
 #include "libxorp/callback.hh"
 #include "libxorp/ipvx.hh"
@@ -62,7 +63,10 @@
  * It also allows arbitrary filters to receive the raw IP data for that
  * protocol.
  */
-class IoIpComm : public IoIpReceiver {
+class IoIpComm :
+    public boost::noncopyable,
+    public IoIpReceiver
+{
 public:
     /**
      * Filter class.

Modified: trunk/xorp/fea/io_link_manager.hh
===================================================================
--- trunk/xorp/fea/io_link_manager.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/fea/io_link_manager.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -27,6 +27,7 @@
 #include <vector>
 #include <set>
 #include <map>
+#include <boost/noncopyable.hpp>
 
 #include "libxorp/callback.hh"
 #include "libxorp/mac.hh"
@@ -56,7 +57,10 @@
  * It also allows arbitrary filters to receive the raw link-level data for that
  * protocol.
  */
-class IoLinkComm : public IoLinkReceiver {
+class IoLinkComm :
+    public boost::noncopyable,
+    public IoLinkReceiver
+{
 public:
     /**
      * Filter class.

Modified: trunk/xorp/fea/io_tcpudp_manager.hh
===================================================================
--- trunk/xorp/fea/io_tcpudp_manager.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/fea/io_tcpudp_manager.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -24,6 +24,7 @@
 
 #include <map>
 #include <set>
+#include <boost/noncopyable.hpp>
 
 #include "libxorp/ipvx.hh"
 
@@ -37,7 +38,10 @@
 /**
  * A class that handles I/O TCP/UDP communication.
  */
-class IoTcpUdpComm : public IoTcpUdpReceiver {
+class IoTcpUdpComm :
+    public boost::noncopyable,
+    public IoTcpUdpReceiver
+{
 public:
     /**
      * Joined multicast group class.

Modified: trunk/xorp/libxipc/finder.hh
===================================================================
--- trunk/xorp/libxipc/finder.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxipc/finder.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -34,12 +34,15 @@
 #include "finder_messenger.hh"
 #include "finder_xrl_queue.hh"
 
+#include <boost/noncopyable.hpp>
 
 class FinderTarget;
 class FinderClass;
 class FinderEvent;
 
-class Finder : public FinderMessengerManager
+class Finder :
+    public boost::noncopyable,
+    public FinderMessengerManager
 {
 public:
     typedef list<FinderMessengerBase*> FinderMessengerList;
@@ -154,9 +157,6 @@
 
     EventLoop& eventloop() const { return _e; }
 
-    Finder(const Finder&);		// Not implemented
-    Finder& operator=(const Finder&);	// Not implemented
-
 protected:
     EventLoop&		 _e;
     XrlCmdMap		 _cmds;

Modified: trunk/xorp/libxipc/finder_client.cc
===================================================================
--- trunk/xorp/libxipc/finder_client.cc	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxipc/finder_client.cc	2009-12-03 22:10:51 UTC (rev 11662)
@@ -19,11 +19,11 @@
 // XORP, Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA;
 // http://xorp.net
 
-
-
 #include <functional>
 #include <algorithm>
 
+#include <boost/noncopyable.hpp>
+
 #include "finder_module.h"
 
 #include "libxorp/callback.hh"
@@ -192,16 +192,16 @@
  * Class that handles resolutions for FinderClient, and puts results
  * into FinderClient's resolved table and notifies the client.
  */
-class FinderClientQuery : public FinderClientOneOffOp
+class FinderClientQuery :
+    public boost::noncopyable,
+    public FinderClientOneOffOp
 {
 public:
     typedef FinderClient::QueryCallback QueryCallback;
     typedef FinderClient::ResolvedTable ResolvedTable;
 
 private:
-    FinderClientQuery();					// Not Impl.
-    FinderClientQuery(const FinderClientQuery&);		// Not Impl.
-    FinderClientQuery& operator=(const FinderClientQuery&);	// Not Impl.
+    FinderClientQuery();	// Not directly constructible.
 
 public:
     FinderClientQuery(EventLoop&	   eventloop,

Modified: trunk/xorp/libxipc/finder_tcp.hh
===================================================================
--- trunk/xorp/libxipc/finder_tcp.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxipc/finder_tcp.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -34,6 +34,8 @@
 
 #include <vector>
 
+#include <boost/noncopyable.hpp>
+
 #ifdef HAVE_SYS_UIO_H
 #include <sys/uio.h>
 #endif
@@ -42,7 +44,9 @@
 #define MAX_XRL_INPUT_SIZE	65536	// maximum total XRL input buffer
 					// size on the network.
 
-class FinderTcpBase {
+class FinderTcpBase :
+    public boost::noncopyable
+{
 public:
     FinderTcpBase(EventLoop& e, XorpFd fd);
 
@@ -111,9 +115,6 @@
     bool closed() const;
 
 protected:
-    FinderTcpBase(const FinderTcpBase&);		// Not implemented
-    FinderTcpBase& operator=(const FinderTcpBase&);	// Not implemented
-
     void read_callback(AsyncFileOperator::Event,
 		       const uint8_t*, size_t, size_t);
     void write_callback(AsyncFileOperator::Event,
@@ -130,7 +131,9 @@
     uint32_t _osize;	// output buffer size as advertised.
 };
 
-class FinderTcpListenerBase {
+class FinderTcpListenerBase :
+    public boost::noncopyable
+{
 public:
     typedef vector<IPv4> AddrList;
     typedef vector<IPv4Net> NetList;
@@ -182,9 +185,6 @@
      */
     void connect_hook(XorpFd fd, IoEventType type);
 
-    FinderTcpListenerBase(const FinderTcpListenerBase&);	    // Not impl
-    FinderTcpListenerBase& operator=(const FinderTcpListenerBase&); // Not impl
-
     EventLoop& eventloop() const { return _e; }
 
 protected:

Modified: trunk/xorp/libxipc/xrl_cmd_map.hh
===================================================================
--- trunk/xorp/libxipc/xrl_cmd_map.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxipc/xrl_cmd_map.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -27,6 +27,8 @@
 #include <map>
 #include <string>
 
+#include <boost/noncopyable.hpp>
+
 #include "libxorp/callback.hh"
 #include "xrl.hh"
 #include "xrl_error.hh"
@@ -49,7 +51,9 @@
     XrlRecvCallback	_cb;
 };
 
-class XrlCmdMap {
+class XrlCmdMap :
+    public boost::noncopyable
+{
 public:
     typedef map<string, XrlCmdEntry> CmdMap;
 
@@ -79,9 +83,6 @@
 protected:
     bool add_handler (const XrlCmdEntry& c);
 
-    XrlCmdMap(const XrlCmdMap&);		// not implemented
-    XrlCmdMap& operator=(const XrlCmdMap&);	// not implemented
-
 protected:
     const string _name;
 

Modified: trunk/xorp/libxipc/xrl_pf.hh
===================================================================
--- trunk/xorp/libxipc/xrl_pf.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxipc/xrl_pf.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -32,6 +32,8 @@
 #include "libxorp/timer.hh"
 #include "libxorp/exceptions.hh"
 
+#include <boost/noncopyable.hpp>
+
 class Xrl;
 class XrlError;
 class XrlArgs;
@@ -72,6 +74,7 @@
 // XrlPFSender
 
 class XrlPFSender
+    : public boost::noncopyable
 {
 public:
     typedef
@@ -109,10 +112,6 @@
     const string& address() const		{ return _address; }
     EventLoop& eventloop() const		{ return _eventloop; }
 
-private:
-    XrlPFSender(const XrlPFSender&);			// Not implemented
-    XrlPFSender& operator=(const XrlPFSender&);		// Not implemented
-
 protected:
     EventLoop& _eventloop;
     string _address;

Modified: trunk/xorp/libxipc/xrl_pf_stcp.cc
===================================================================
--- trunk/xorp/libxipc/xrl_pf_stcp.cc	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxipc/xrl_pf_stcp.cc	2009-12-03 22:10:51 UTC (rev 11662)
@@ -40,6 +40,8 @@
 #include <map>
 #include <algorithm>
 
+#include <boost/noncopyable.hpp>
+
 #include "libxorp/debug.h"
 #include "libxipc/xrl_module.h"
 #include "libxorp/xlog.h"
@@ -517,7 +519,9 @@
  * in wire format rather than as an Xrl since the existing scheme
  * requires additional copy operations.
  */
-class RequestState {
+class RequestState :
+    public boost::noncopyable
+{
 public:
     typedef XrlPFSender::SendCallback Callback;
 
@@ -594,10 +598,6 @@
     }
 
 private:
-    RequestState(const RequestState&);			// Not implemented
-    RequestState& operator=(const RequestState&);	// Not implemented
-
-private:
     XrlPFSTCPSender*	_p;				// parent
     uint32_t		_sn;				// sequence number
     uint8_t*		_b;

Modified: trunk/xorp/libxorp/asyncio.hh
===================================================================
--- trunk/xorp/libxorp/asyncio.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxorp/asyncio.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -33,6 +33,8 @@
 #include <fcntl.h>
 #endif
 
+#include <boost/noncopyable.hpp>
+
 #include "libxorp/xorpfd.hh"
 #include "libxorp/callback.hh"
 #include "libxorp/eventloop.hh"
@@ -211,7 +213,9 @@
     void flush_buffers();
 
 protected:
-    class BufferInfo {
+    class BufferInfo :
+        public boost::noncopyable
+    {
     public:
 	BufferInfo(uint8_t* b, size_t bb, Callback cb)
 	    : _buffer(b), _buffer_bytes(bb), _offset(0), _cb(cb) {}
@@ -228,9 +232,7 @@
 	void incr_offset(size_t done) { _offset += done; }
 
     private:
-	BufferInfo();					// Not implemented
-	BufferInfo(const BufferInfo&);			// Not implemented
-	BufferInfo& operator=(const BufferInfo&);	// Not implemented
+	BufferInfo();				// Not directly constructible
 
 	uint8_t*	_buffer;
 	size_t		_buffer_bytes;
@@ -248,7 +250,10 @@
 /**
  * @short Write asynchronously to non-blocking file.
  */
-class AsyncFileWriter : public AsyncFileOperator {
+class AsyncFileWriter :
+    public boost::noncopyable,
+    public AsyncFileOperator
+{
 public:
     /**
      * @param e EventLoop that object should associate itself with.
@@ -358,12 +363,12 @@
     void flush_buffers();
 
 private:
-    AsyncFileWriter();					// Not implemented
-    AsyncFileWriter(const AsyncFileWriter&);		// Not implemented
-    AsyncFileWriter& operator=(const AsyncFileWriter&);	// Not implemented
+    AsyncFileWriter();			// Not directly constructible
 
 protected:
-    class BufferInfo {
+    class BufferInfo :
+	public boost::noncopyable
+    {
     public:
 	BufferInfo(const uint8_t* b, size_t bb, const Callback& cb)
 	    : _buffer(b), _buffer_bytes(bb), _offset(0), _dst_port(0),
@@ -398,9 +403,7 @@
 	bool is_sendto() const { return (_is_sendto); }
 
     private:
-	BufferInfo();					// Not implemented
-	BufferInfo(const BufferInfo&);			// Not implemented
-	BufferInfo& operator=(const BufferInfo&);	// Not implemented
+	BufferInfo();			// Not directly constructible
 
 	const vector<uint8_t>	_data;		// Local copy of the data
 	const uint8_t*		_buffer;

Modified: trunk/xorp/libxorp/buffered_asyncio.hh
===================================================================
--- trunk/xorp/libxorp/buffered_asyncio.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxorp/buffered_asyncio.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -32,10 +32,14 @@
 #include <fcntl.h>
 #endif
 
+#include <boost/noncopyable.hpp>
+
 #include "libxorp/callback.hh"
 #include "libxorp/eventloop.hh"
 
-class BufferedAsyncReader {
+class BufferedAsyncReader :
+    public boost::noncopyable
+{
 public:
     enum Event {
 	DATA 		  = 1,
@@ -144,9 +148,7 @@
     void stop();
 
 private:
-    BufferedAsyncReader();				// Not implemented
-    BufferedAsyncReader(const BufferedAsyncReader&);	// Not implemented
-    BufferedAsyncReader& operator=(const BufferedAsyncReader&); // Not implemented
+    BufferedAsyncReader();		// Not directly constructible
 
 private:
     void io_event(XorpFd fd, IoEventType type);

Modified: trunk/xorp/libxorp/eventloop.hh
===================================================================
--- trunk/xorp/libxorp/eventloop.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxorp/eventloop.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -37,6 +37,8 @@
 
 #include "selector.hh"
 
+#include <boost/noncopyable.hpp>
+
 /**
  * @short Event Loop.
  *
@@ -44,7 +46,9 @@
  * for Xorp processes.  All XorpTimer and select operations should be
  * co-ordinated through this interface.
  */
-class EventLoop {
+class EventLoop :
+    public boost::noncopyable
+{
 public:
     /**
      * Constructor
@@ -341,9 +345,6 @@
     void set_aggressiveness(int num);
 
 private:
-    EventLoop(const EventLoop&);		// not implemented
-    EventLoop& operator=(const EventLoop&);	// not implemented
-
     bool do_work(bool can_block);
 
 private:

Modified: trunk/xorp/libxorp/safe_callback_obj.hh
===================================================================
--- trunk/xorp/libxorp/safe_callback_obj.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxorp/safe_callback_obj.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -26,6 +26,7 @@
 
 #include <algorithm>
 #include <vector>
+#include <boost/noncopyable.hpp>
 
 struct SafeCallbackBase;
 
@@ -38,8 +39,14 @@
  * a CallbackSafeObject is destructed it informs all the callbacks that
  * refer to it that this is the case and invalidates (sets to null)
  * the object they point to.
+ *
+ * Copy operations are not supported.  It's hard to know what the
+ * correct thing to do on assignment or copy, so best bet is not
+ * to do anything.
  */
-class CallbackSafeObject {
+class CallbackSafeObject :
+    public boost::noncopyable
+{
 public:
     CallbackSafeObject() {}
     virtual ~CallbackSafeObject();
@@ -48,13 +55,6 @@
     void unref_cb(SafeCallbackBase* scb);
 
 protected:
-    // Copy operations are not supported.  It's hard to know what the
-    // correct thing to do on assignment or copy, so best bet is not
-    // to do anything.
-    CallbackSafeObject(const CallbackSafeObject&);		// Not implemented
-    CallbackSafeObject& operator=(const CallbackSafeObject&);	// Not implemented
-
-protected:
     std::vector<SafeCallbackBase*> _cbs;
 };
 
@@ -64,7 +64,9 @@
  * These are object callbacks that are only dispatched if target of
  * callback is non-null.
  */
-class SafeCallbackBase {
+class SafeCallbackBase :
+    public boost::noncopyable
+{
 public:
     /**
      * Constructor.
@@ -86,10 +88,9 @@
     bool valid() const;
 
 protected:
-    SafeCallbackBase();					  // Not implemented
-    SafeCallbackBase(const SafeCallbackBase&);		  // Not implemented
-    SafeCallbackBase& operator=(const SafeCallbackBase&); // Not implemented
+    SafeCallbackBase();			  // Not directly constructible
 
+protected:
     CallbackSafeObject* _cso;
 };
 

Modified: trunk/xorp/libxorp/selector.hh
===================================================================
--- trunk/xorp/libxorp/selector.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxorp/selector.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -36,6 +36,8 @@
 
 #include <vector>
 
+#include <boost/noncopyable.hpp>
+
 #include "callback.hh"
 #include "ioevents.hh"
 #include "task.hh"
@@ -97,7 +99,9 @@
  * are invoked when one of the @ref wait_and_dispatch methods is called
  * and I/O is pending on the particular descriptors.
  */
-class SelectorList {
+class SelectorList :
+    public boost::noncopyable
+{
 public:
 
     /**
@@ -229,9 +233,6 @@
 private:
     int do_select(struct timeval* to, bool force);
 
-    SelectorList(const SelectorList&);			// not implemented
-    SelectorList& operator=(const SelectorList&);	// not implemented
-
 private:
     enum {
 	// correspond to SelectorMask; correspondence checked with

Modified: trunk/xorp/libxorp/task.hh
===================================================================
--- trunk/xorp/libxorp/task.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxorp/task.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -30,6 +30,7 @@
 #include "round_robin.hh"
 #include "callback.hh"
 
+#include <boost/noncopyable.hpp>
 
 class TaskList;
 class TaskNode;
@@ -40,7 +41,10 @@
 typedef XorpCallback1<void, XorpTask&>::RefPtr BasicTaskCallback;
 
 
-class TaskNode : public RoundRobinObjBase {
+class TaskNode :
+    public boost::noncopyable,
+    public RoundRobinObjBase
+{
 public:
     TaskNode(TaskList* task_list, BasicTaskCallback cb);
     virtual ~TaskNode();
@@ -58,9 +62,6 @@
     virtual void run(XorpTask &) {};     // Implemented by children
 
 private:
-    TaskNode(const TaskNode&);			// not implemented
-    TaskNode& operator=(const TaskNode&);	// not implemented
-
     TaskList*	_task_list;	// TaskList this node is associated with
     BasicTaskCallback _cb;
     int		_ref_cnt;	// Number of referring XorpTask objects

Modified: trunk/xorp/libxorp/timer.hh
===================================================================
--- trunk/xorp/libxorp/timer.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/libxorp/timer.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -33,6 +33,8 @@
 #include <sys/time.h>
 #endif
 
+#include <boost/noncopyable.hpp>
+
 #include "timeval.hh"
 #include "heap.hh"
 #include "callback.hh"
@@ -420,8 +422,9 @@
     bool expire_one(int worst_priority);
 
 private:
-    TimerList(const TimerList&);		// not implemented
-    TimerList& operator=(const TimerList&);	// not implemented
+    // The following is not a noncopyable candidate.
+    TimerList(const TimerList&);		// Not copyable.
+    TimerList& operator=(const TimerList&);	// Assignable only by self.
 
 private:
     // we need one heap for each priority level
@@ -434,8 +437,10 @@
     friend class TimerListObserverBase;
 };
 
-
-class TimerNode : public HeapBase {
+class TimerNode :
+    public boost::noncopyable,
+    public HeapBase
+{
 protected:
     TimerNode(TimerList*, BasicTimerCallback);
     virtual ~TimerNode();

Modified: trunk/xorp/policy/backend/instruction.hh
===================================================================
--- trunk/xorp/policy/backend/instruction.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/backend/instruction.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -46,7 +46,10 @@
  *
  * The Push instruction owns the element.
  */
-class Push : public Instruction {
+class Push :
+    public boost::noncopyable,
+    public Instruction
+{
 public:
     /**
      * Element is owned by Push.
@@ -67,10 +70,6 @@
 
 private:
     Element* _elem;
-    
-    // not implemented
-    Push(const Push&);
-    Push& operator=(const Push&);
 };
 
 /**
@@ -214,7 +213,10 @@
  *
  * Operation will pop N elements from the stack.
  */
-class NaryInstr : public Instruction {
+class NaryInstr :
+    public boost::noncopyable,
+    public Instruction
+{
 public:
     /**
      * Caller must not delete / modify operation.
@@ -234,10 +236,6 @@
 
 private:
     Oper* _op;
-
-    // not impl
-    NaryInstr(const NaryInstr&);
-    NaryInstr& operator=(const NaryInstr&);
 };
 
 #endif // __POLICY_BACKEND_INSTRUCTION_HH__

Modified: trunk/xorp/policy/backend/iv_exec.hh
===================================================================
--- trunk/xorp/policy/backend/iv_exec.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/backend/iv_exec.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -25,11 +25,15 @@
 
 #include <stack>
 
+#include <boost/noncopyable.hpp>
+
 #include "libxorp/xorp.h"
+
 #include "policy/common/dispatcher.hh"
 #include "policy/common/varrw.hh"
 #include "policy/common/policy_exception.hh"
 #include "policy_profiler.hh"
+
 #include "instruction.hh"
 #include "set_manager.hh"
 #include "term_instr.hh"
@@ -42,7 +46,10 @@
  * The execution process may be optimized by not using visitors. Having
  * instructions implement a method that returns a flow action directly.
  */
-class IvExec : public InstrVisitor {
+class IvExec :
+    public boost::noncopyable,
+    public InstrVisitor
+{
 public:
     /**
      * A FlowAction is what has to be done with the route. DEFAULT is the
@@ -170,10 +177,6 @@
     bool	    _did_trace;
     Next::Flow	    _ctr_flow;
     SUBR*	    _subr;
-
-    // not impelmented
-    IvExec(const IvExec&);
-    IvExec& operator=(const IvExec&);
 };
 
 #endif // __POLICY_BACKEND_IV_EXEC_HH__

Modified: trunk/xorp/policy/backend/policy_filter.hh
===================================================================
--- trunk/xorp/policy/backend/policy_filter.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/backend/policy_filter.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -26,6 +26,8 @@
 #include <string>
 #include <map>
 
+#include <boost/noncopyable.hpp>
+
 #include "policy/common/varrw.hh"
 #include "policy/common/policy_exception.hh"
 #include "policy_instr.hh"
@@ -39,7 +41,10 @@
  *
  * It may accept/reject/modify any route which supports VarRW.
  */
-class PolicyFilter : public FilterBase {
+class PolicyFilter :
+    public boost::noncopyable,
+    public FilterBase
+{
 public:
     /**
      * @short Exception thrown on configuration error.
@@ -85,10 +90,6 @@
     IvExec		    _exec;
     PolicyProfiler*	    _profiler_exec;
     SUBR*		    _subr;
-
-    // not impl
-    PolicyFilter(const PolicyFilter&);
-    PolicyFilter& operator=(const PolicyFilter&);
 };
 
 typedef ref_ptr<PolicyFilter> RefPf;

Modified: trunk/xorp/policy/backend/policy_filters.hh
===================================================================
--- trunk/xorp/policy/backend/policy_filters.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/backend/policy_filters.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -23,6 +23,8 @@
 #ifndef __POLICY_BACKEND_POLICY_FILTERS_HH__
 #define __POLICY_BACKEND_POLICY_FILTERS_HH__
 
+#include <boost/noncopyable.hpp>
+
 #include "policy_filter.hh"
 #include "policy/common/filter.hh"
 #include "policy/common/varrw.hh"
@@ -35,7 +37,9 @@
  * future an option to disable a filter should be added. Although, not running a
  * filter is harmless for now [if configured however, state consumes memory].
  */
-class PolicyFilters {
+class PolicyFilters :
+    public boost::noncopyable
+{
 public:
     class PolicyFiltersErr : public PolicyException {
     public:
@@ -87,13 +91,10 @@
      */
     FilterBase&   whichFilter(const uint32_t& ftype);
 
+private:
     FilterBase*   _import_filter;
     FilterBase*   _export_sm_filter;
     FilterBase*   _export_filter;
-
-    // not impl
-    PolicyFilters(const PolicyFilters&);
-    PolicyFilters& operator=(const PolicyFilters&);
 };
 
 #endif // __POLICY_BACKEND_POLICY_FILTERS_HH__

Modified: trunk/xorp/policy/backend/policy_instr.hh
===================================================================
--- trunk/xorp/policy/backend/policy_instr.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/backend/policy_instr.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -23,17 +23,21 @@
 #ifndef __POLICY_BACKEND_POLICY_INSTR_HH__
 #define __POLICY_BACKEND_POLICY_INSTR_HH__
 
-#include "term_instr.hh"
 #include <vector>
 #include <string>
 
+#include <boost/noncopyable.hpp>
 
+#include "term_instr.hh"
+
 /**
  * @short Container for terms instructions.
  *
  * A policy instruction is a list of term instructions.
  */
-class PolicyInstr {
+class PolicyInstr :
+    public boost::noncopyable
+{
 public:
     /**
      * @param name name of the policy.
@@ -83,10 +87,6 @@
     TermInstr**	_terms;
     int		_termc;
     bool	_trace;
-
-    // not impl
-    PolicyInstr(const PolicyInstr&);
-    PolicyInstr& operator=(const PolicyInstr&);
 };
 
 #endif // __POLICY_BACKEND_POLICY_INSTR_HH__

Modified: trunk/xorp/policy/backend/policy_redist_map.hh
===================================================================
--- trunk/xorp/policy/backend/policy_redist_map.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/backend/policy_redist_map.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -23,10 +23,13 @@
 #ifndef __POLICY_BACKEND_POLICY_REDIST_MAP_HH__
 #define __POLICY_BACKEND_POLICY_REDIST_MAP_HH__
 
-#include "policytags.hh"
 #include <map>
 #include <string>
 
+#include <boost/noncopyable.hpp>
+
+#include "policytags.hh"
+
 /**
  * @short A Map between policytags and where the route should be redistributed.
  *
@@ -34,7 +37,9 @@
  * policytags need to be analyzed. According to these tags, the route must be
  * sent to various routing protocols to enable export policies.
  */
-class PolicyRedistMap {
+class PolicyRedistMap :
+    public boost::noncopyable
+{
 public:
     PolicyRedistMap();
     ~PolicyRedistMap();
@@ -63,13 +68,7 @@
 private:
     // XXX: this should be the other way around for faster lookups
     typedef map<string,PolicyTags*> Map;
-
     Map _map;
-
-
-    // not impl
-    PolicyRedistMap(const PolicyRedistMap&);
-    PolicyRedistMap& operator=(const PolicyRedistMap&);
 };
 
 #endif // __POLICY_BACKEND_POLICY_REDIST_MAP_HH__

Modified: trunk/xorp/policy/backend/set_manager.hh
===================================================================
--- trunk/xorp/policy/backend/set_manager.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/backend/set_manager.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -23,12 +23,14 @@
 #ifndef __POLICY_BACKEND_SET_MANAGER_HH__
 #define __POLICY_BACKEND_SET_MANAGER_HH__
 
-#include "policy/common/element_base.hh"
-#include "policy/common/policy_exception.hh"
 #include <string>
 #include <map>
 
+#include <boost/noncopyable.hpp>
 
+#include "policy/common/element_base.hh"
+#include "policy/common/policy_exception.hh"
+
 /**
  * @short Class that owns all sets. It resolves set names to ElemSet's.
  *
@@ -36,7 +38,9 @@
  * reconfigured, but only the sets. This is currently not the case, but there is
  * enough structure to allow it.
  */
-class SetManager {
+class SetManager :
+    public boost::noncopyable
+{
 public:
     typedef map<string,Element*> SetMap;
 
@@ -72,13 +76,9 @@
      * Zap all sets.
      */
     void clear();
+
 private:
-
     SetMap* _sets;
-
-    // not impl
-    SetManager(const SetManager&);
-    SetManager& operator=(const SetManager&);
 };
 
 #endif // __POLICY_BACKEND_SET_MANAGER_HH__

Modified: trunk/xorp/policy/backend/single_varrw.hh
===================================================================
--- trunk/xorp/policy/backend/single_varrw.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/backend/single_varrw.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -25,6 +25,8 @@
 
 #include <list>
 
+#include <boost/noncopyable.hpp>
+
 #include "policy/common/varrw.hh"
 #include "policy/common/policy_utils.hh"
 #include "policy/common/element_base.hh"
@@ -39,7 +41,10 @@
  * Because of this caching, the SingleVarRW is usuable only once. After it has
  * done its work once, it has to be re-created.
  */
-class SingleVarRW : public VarRW {
+class SingleVarRW :
+    public boost::noncopyable,
+    public VarRW
+{
 public:
     /**
      * @short Exception thrown on error, such as reading unsupported variable.
@@ -141,10 +146,6 @@
     bool	    _modified[VAR_MAX]; // variable id's that changed
     bool	    _did_first_read;
     PolicyTags*	    _pt;
-
-    // not impl
-    SingleVarRW(const SingleVarRW&);
-    SingleVarRW& operator=(const SingleVarRW&);
 };
 
 #endif // __POLICY_BACKEND_SINGLE_VARRW_HH__

Modified: trunk/xorp/policy/backend/term_instr.hh
===================================================================
--- trunk/xorp/policy/backend/term_instr.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/backend/term_instr.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -25,16 +25,20 @@
 
 #include <vector>
 #include <string>
+
+#include <boost/noncopyable.hpp>
+
 #include "instruction.hh"
 #include "policy/common/policy_utils.hh"
 
-
 /**
  * @short Container of instructions.
  *
  * A term is an atomic policy unit which may be executed.
  */
-class TermInstr {
+class TermInstr :
+    public boost::noncopyable
+{
 public:
     /**
      * @param name term name.
@@ -79,10 +83,6 @@
     string _name;
     Instruction** _instructions;
     int		  _instrc;
-
-    // not impl
-    TermInstr(const TermInstr&);
-    TermInstr& operator=(const TermInstr&);
 };
 
 #endif // __POLICY_BACKEND_TERM_INSTR_HH__

Modified: trunk/xorp/policy/code_list.hh
===================================================================
--- trunk/xorp/policy/code_list.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/code_list.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -23,17 +23,19 @@
 #ifndef __POLICY_CODE_LIST_HH__
 #define __POLICY_CODE_LIST_HH__
 
-
 #include <string>
 #include <list>
 
+#include <boost/noncopyable.hpp>
+
 #include "code.hh"
 
-
 /**
  * @short A collection of code fragments.
  */
-class CodeList {
+class CodeList :
+    public boost::noncopyable
+{
 public:
     /**
      * Initialize codelist.
@@ -98,10 +100,6 @@
     typedef list<Code*> ListCode;
 
     ListCode _codes;
-
-    // not impl
-    CodeList(const CodeList&);
-    CodeList& operator=(const CodeList&);
 };
 
 #endif // __POLICY_CODE_LIST_HH__

Modified: trunk/xorp/policy/common/element.hh
===================================================================
--- trunk/xorp/policy/common/element.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/common/element.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -451,7 +451,7 @@
     ElemNet();
     ElemNet(const char*);
     ElemNet(const A&);
-    ElemNet(const ElemNet<A>&);
+    ElemNet(const ElemNet<A>&);	    // copyable
     ~ElemNet();
 
     string	    str() const;
@@ -465,8 +465,7 @@
     bool	operator==(const ElemNet<A>& rhs) const;
 
 private:
-    // not implemented
-    ElemNet& operator=(const ElemNet<A>&);
+    ElemNet& operator=(const ElemNet<A>&);	// not assignable
 
     const A*		_net;
     Mod			_mod;

Modified: trunk/xorp/policy/configuration.hh
===================================================================
--- trunk/xorp/policy/configuration.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/configuration.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -23,7 +23,10 @@
 #ifndef __POLICY_CONFIGURATION_HH__
 #define __POLICY_CONFIGURATION_HH__
 
+#include <boost/noncopyable.hpp>
+
 #include "policy/common/policy_exception.hh"
+
 #include "process_watch_base.hh"
 #include "set_map.hh"
 #include "policy_map.hh"
@@ -81,7 +84,9 @@
  * checking by (dis)allowing the user to do certain actions [such as delete sets
  * which are referenced in policies].
  */
-class Configuration {
+class Configuration :
+    public boost::noncopyable
+{
 public:
     typedef map<string,Code*> CodeMap;
     typedef map<string,TagSet*> TagMap;
@@ -397,10 +402,6 @@
     TagMap		    _tagmap;
     VarMap		    _varmap;
     FilterManagerBase*	    _filter_manager; // do not delete
-
-    // not impl
-    Configuration(const Configuration&);
-    Configuration& operator=(const Configuration&);
 };
 
 #endif // __POLICY_CONFIGURATION_HH__

Modified: trunk/xorp/policy/dependency.hh
===================================================================
--- trunk/xorp/policy/dependency.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/dependency.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -29,6 +29,8 @@
 #include <sstream>
 #include <set>
 
+#include <boost/noncopyable.hpp>
+
 #include "policy/common/policy_exception.hh"
 
 /**
@@ -46,7 +48,9 @@
  * Having a consistent dependency list allows objects to be deleted correctly.
  */
 template <class T>
-class Dependency {
+class Dependency :
+    public boost::noncopyable
+{
 public:
     // things that depend on object
     typedef list<string>	    DependencyList;
@@ -204,10 +208,6 @@
     Map _map;
 
     Pair* findDepend(const string& objectname) const;
-
-    // not impl
-    Dependency(const Dependency&);
-    Dependency& operator=(const Dependency&);
 };
 
 #endif // __POLICY_DEPENDENCY_HH__

Modified: trunk/xorp/policy/node.hh
===================================================================
--- trunk/xorp/policy/node.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/node.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -23,17 +23,23 @@
 #ifndef __POLICY_NODE_HH__
 #define __POLICY_NODE_HH__
 
+#include <string>
+
+#include <boost/noncopyable.hpp>
+
 #include "policy/common/operator_base.hh"
 #include "policy/common/varrw.hh"
+
 #include "node_base.hh"
 #include "visitor.hh"
-#include <string>
 
 /**
  * @short A generic node wrapper.
  */
 template<class T>
-class NodeAny : public Node {
+class NodeAny :
+    public Node
+{
 public:
     /**
      * @param val the value of the node.
@@ -63,7 +69,10 @@
  *
  * Such as an IP address.
  */
-class NodeElem : public Node {
+class NodeElem :
+    public boost::noncopyable,
+    public Node
+{
 public:
     /**
      * The node owns the element. Caller must not modify / delete.
@@ -83,10 +92,6 @@
 
 private:
     Element* _elem;
-
-    // not impl
-    NodeElem(const NodeElem&);
-    NodeElem& operator=(const NodeElem&);
 };
 
 /**
@@ -119,7 +124,10 @@
  * The node will thus have two children. It owns both of them.
  *
  */
-class NodeBin : public Node {
+class NodeBin :
+    public boost::noncopyable,
+    public Node
+{
 public:
     /**
      * Caller must not delete / modify pointers.
@@ -158,10 +166,6 @@
     BinOper* _op;
     Node *_left;
     Node *_right;
-   
-    // not impl
-    NodeBin(const NodeBin&);
-    NodeBin& operator=(const NodeBin&);
 };
 
 /**
@@ -169,7 +173,10 @@
  *
  * The node will have one child. It owns it.
  */
-class NodeUn : public Node {
+class NodeUn :
+    public boost::noncopyable,
+    public Node
+{
 public:
     /**
      * Caller must not delete / modify pointers.
@@ -199,17 +206,16 @@
 private:
     UnOper* _op;
     Node* _node;
-
-    // not impl
-    NodeUn(const NodeUn&);
-    NodeUn& operator=(const NodeUn&);
 };
 
 
 /**
  * @short An assignment operation.
  */
-class NodeAssign : public Node {
+class NodeAssign :
+    public boost::noncopyable,
+    public Node
+{
 public:
     /**
      * Caller must not delete / modify pointer.
@@ -241,10 +247,6 @@
     string	_varid;
     BinOper*	_mod;
     Node*	_rvalue;
-
-    // not impl
-    NodeAssign(const NodeAssign&);
-    NodeAssign& operator=(const NodeAssign&);
 };
 
 /**

Modified: trunk/xorp/policy/policy_list.hh
===================================================================
--- trunk/xorp/policy/policy_list.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/policy_list.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -23,6 +23,8 @@
 #ifndef __POLICY_POLICY_LIST_HH__
 #define __POLICY_POLICY_LIST_HH__
 
+#include <boost/noncopyable.hpp>
+
 #include "code_list.hh"
 #include "set_map.hh"
 #include "var_map.hh"
@@ -40,7 +42,9 @@
  * Each policy list is an instantiation of a policy, and thus it hold the
  * specific code for this instantiation.
  */
-class PolicyList {
+class PolicyList :
+    public boost::noncopyable
+{
 public:
     typedef set<uint32_t> TagSet;
     typedef map<string,TagSet*> TagMap;
@@ -175,10 +179,6 @@
     Term*	    _mod_term_export;
     static uint32_t _pe;
     POLICIES	    _pe_policies;
-
-    // not impl
-    PolicyList(const PolicyList&);
-    PolicyList& operator=(const PolicyList&);
 };
 
 #endif // __POLICY_POLICY_LIST_HH__

Modified: trunk/xorp/policy/policy_statement.hh
===================================================================
--- trunk/xorp/policy/policy_statement.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/policy_statement.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -27,20 +27,24 @@
 #include <set>
 #include <string>
 
+#include <boost/noncopyable.hpp>
+
 #include "libproto/config_node_id.hh"
+
 #include "policy/common/policy_exception.hh"
+
 #include "set_map.hh"
 #include "term.hh"
 
 class PolicyMap;
-
 typedef set<string> DEPS;
 
 /**
  * @short A policy statement is a collection of terms.
  */
-class PolicyStatement {
-
+class PolicyStatement :
+    public boost::noncopyable
+{
 public:
     /**
      * @short Exception thrown on error such as when no term is found.
@@ -167,10 +171,6 @@
     DEPS				_policies;
     SetMap&				_smap;
     PolicyMap&				_pmap;
-
-    // not impl
-    PolicyStatement(const PolicyStatement&);
-    PolicyStatement& operator=(const PolicyStatement&);
 };
 
 #endif // __POLICY_POLICY_STATEMENT_HH__

Modified: trunk/xorp/policy/protocol_map.hh
===================================================================
--- trunk/xorp/policy/protocol_map.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/protocol_map.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -26,6 +26,8 @@
 #include <string>
 #include <map>
 
+#include <boost/noncopyable.hpp>
+
 /**
  * @short Maps protocols to the XORP process name.
  *
@@ -33,7 +35,9 @@
  * explicitly added.  This class is used to map user configuration directives
  * regarding protocols to the actual name of the XORP process for that protocol.
  */
-class ProtocolMap {
+class ProtocolMap :
+    public boost::noncopyable
+{
 public:
     ProtocolMap();
 
@@ -64,9 +68,6 @@
 private:
     typedef map<string, string> Map;
 
-    ProtocolMap(const ProtocolMap&); // not impl
-    ProtocolMap& operator=(const ProtocolMap&); // not impl
-
     Map _map;
 };
 

Modified: trunk/xorp/policy/semantic_varrw.hh
===================================================================
--- trunk/xorp/policy/semantic_varrw.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/semantic_varrw.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -23,12 +23,16 @@
 #ifndef __POLICY_SEMANTIC_VARRW_HH__
 #define __POLICY_SEMANTIC_VARRW_HH__
 
+#include <string>
+
+#include <boost/noncopyable.hpp>
+
 #include "policy/common/varrw.hh"
 #include "policy/common/element_base.hh"
 #include "policy/common/element_factory.hh"
 #include "policy/common/policy_exception.hh"
+
 #include "var_map.hh"
-#include <string>
 
 /**
  * @short A VarRW used for semantic checking.
@@ -41,7 +45,10 @@
  * The SemanticVarRW will create dummy elements which are initialized to a
  * default value. This may not be optimal for semantic checking.
  */
-class SemanticVarRW : public VarRW {
+class SemanticVarRW :
+    public boost::noncopyable,
+    public VarRW
+{
 public:
     /**
      * @short Exception thrown on illegal variable use.
@@ -103,10 +110,6 @@
     ElementFactory _ef;
 
     set<Element*> _trash;
-
-    // not implemented.
-    SemanticVarRW(const SemanticVarRW&);
-    SemanticVarRW& operator=(const SemanticVarRW&);
 };
 
 #endif // __POLICY_SEMANTIC_VARRW_HH__

Modified: trunk/xorp/policy/source_match_code_generator.hh
===================================================================
--- trunk/xorp/policy/source_match_code_generator.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/source_match_code_generator.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -26,7 +26,10 @@
 #include <vector>
 #include <string>
 
+#include <boost/noncopyable.hpp>
+
 #include "policy/common/policy_exception.hh"
+
 #include "code_generator.hh"
 
 /**
@@ -37,7 +40,10 @@
  * It skips dest and action blocks in policies. 
  * The action block is replaced with the actual policy tagging.
  */
-class SourceMatchCodeGenerator : public CodeGenerator {
+class SourceMatchCodeGenerator :
+    public boost::noncopyable,
+    public CodeGenerator
+{
 public:
     // bool == tag used
     // uint32_t actual tag
@@ -119,10 +125,6 @@
     map<string, set<uint32_t> >	_protocol_tags;
     bool			_protocol_statement;
     string			_policy;
-
-    // not impl
-    SourceMatchCodeGenerator(const SourceMatchCodeGenerator&);
-    SourceMatchCodeGenerator& operator=(const SourceMatchCodeGenerator&);
 };
 
 #endif // __POLICY_SOURCE_MATCH_CODE_GENERATOR_HH__

Modified: trunk/xorp/policy/term.hh
===================================================================
--- trunk/xorp/policy/term.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/term.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -23,21 +23,26 @@
 #ifndef __POLICY_TERM_HH__
 #define __POLICY_TERM_HH__
 
+#include <map>
+#include <string>
+
+#include <boost/noncopyable.hpp>
+
 #include "libproto/config_node_id.hh"
+
 #include "policy/common/policy_exception.hh"
 
-#include <map>
-#include <string>
 #include "node_base.hh"
 
-
 /**
  * @short A term is an atomic policy unit. 
  *
  * It is a complete specification of how a route needs to be matched, and what
  * actions must be taken.
  */
-class Term {
+class Term :
+    public boost::noncopyable
+{
 public:
     enum BLOCKS {
 	SOURCE = 0,
@@ -165,10 +170,6 @@
     Nodes*& _action_nodes;
 
     string  _from_protocol;	// The protocol (in the "from" block)
-
-    // not impl
-    Term(const Term&);
-    Term& operator=(const Term&);
 };
 
 #endif // __POLICY_TERM_HH__

Modified: trunk/xorp/policy/var_map.hh
===================================================================
--- trunk/xorp/policy/var_map.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/var_map.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -23,11 +23,15 @@
 #ifndef __POLICY_VAR_MAP_HH__
 #define __POLICY_VAR_MAP_HH__
 
+#include <string>
+#include <map>
+
+#include <boost/noncopyable.hpp>
+
 #include "policy/common/policy_exception.hh"
 #include "policy/common/varrw.hh"
+
 #include "process_watch.hh"
-#include <string>
-#include <map>
 
 /**
  * @short A VarMap contains all information for legal protocol variables.
@@ -38,7 +42,9 @@
  *
  * This is crutial for semantic checking.
  */
-class VarMap {
+class VarMap :
+    public boost::noncopyable
+{
 public:
     /**
      * @short Exception thrown on VarMap errors such as on unknown variables.
@@ -177,10 +183,6 @@
 
     typedef VariableMap MetaVarContainer;
     MetaVarContainer _metavars;
-    
-    // not impl
-    VarMap(const VarMap&);
-    VarMap& operator=(const VarMap&);
 };
 
 #endif // __POLICY_VAR_MAP_HH__

Modified: trunk/xorp/policy/visitor_semantic.hh
===================================================================
--- trunk/xorp/policy/visitor_semantic.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/policy/visitor_semantic.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -23,9 +23,13 @@
 #ifndef __POLICY_VISITOR_SEMANTIC_HH__
 #define __POLICY_VISITOR_SEMANTIC_HH__
 
+#include <boost/noncopyable.hpp>
+
 #include "libxorp/xorp.h"
+
 #include "policy/common/varrw.hh"
 #include "policy/common/dispatcher.hh"
+
 #include "visitor.hh"
 #include "semantic_varrw.hh"
 #include "set_map.hh"
@@ -39,7 +43,10 @@
  * checking must be performed realtive to the instantiation. [Generic semantic
  * checking may be accomplished too, but it is not done.]
  */
-class VisitorSemantic : public Visitor {
+class VisitorSemantic :
+    public boost::noncopyable,
+    public Visitor
+{
 public:
     enum PolicyType {
 	IMPORT,
@@ -107,10 +114,6 @@
     PolicyType	    _ptype;
     set<Element*>   _trash;
     bool	    _reject;
-
-    // not impl
-    VisitorSemantic(const VisitorSemantic&);
-    VisitorSemantic& operator=(const VisitorSemantic&);
 };
 
 #endif // __POLICY_VISITOR_SEMANTIC_HH__

Modified: trunk/xorp/rib/redist_policy.hh
===================================================================
--- trunk/xorp/rib/redist_policy.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rib/redist_policy.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -22,6 +22,8 @@
 #ifndef __RIB_REDIST_POLICY_HH__
 #define __RIB_REDIST_POLICY_HH__
 
+#include <boost/noncopyable.hpp>
+
 /**
  * @short Base class for Redistribution Policy objects.
  *
@@ -48,7 +50,9 @@
  * @short Base class for Unary Redistribution Policy objects.
  */
 template <typename A>
-class RedistUnaryOp {
+class RedistUnaryOp :
+    public boost::noncopyable
+{
 public:
     /**
      * Constructor.
@@ -61,8 +65,6 @@
 private:
     // The following are not implemented
     RedistUnaryOp();
-    RedistUnaryOp(const RedistUnaryOp<A>&);
-    RedistUnaryOp<A>& operator=(const RedistUnaryOp<A>&);
 
 protected:
     const RedistPolicy<A>* _p1;
@@ -72,7 +74,10 @@
  * @short Base class for Binary Redistribution Policy objects.
  */
 template <typename A>
-class RedistBinaryOp : public RedistPolicy<A> {
+class RedistBinaryOp :
+    public boost::noncopyable,
+    public RedistPolicy<A>
+{
 public:
     /**
      * Constructor.
@@ -89,8 +94,6 @@
 private:
     // The following are not implemented
     RedistBinaryOp();
-    RedistBinaryOp(const RedistBinaryOp<A>&);
-    RedistBinaryOp<A>& operator=(const RedistBinaryOp<A>&);
 
 protected:
     const RedistPolicy<A>* _p1;

Modified: trunk/xorp/rib/rib.hh
===================================================================
--- trunk/xorp/rib/rib.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rib/rib.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -25,6 +25,8 @@
 
 #include <string>
 
+#include <boost/noncopyable.hpp>
+
 #include "libxorp/xorp.h"
 #include "libxorp/ipv4.hh"
 #include "libxorp/ipv6.hh"
@@ -73,7 +75,9 @@
  * taken place to route to command to the right RIB.
  */
 template<class A>
-class RIB {
+class RIB :
+    public boost::noncopyable
+{
 public:
     /**
      * RIB Constructor.
@@ -696,21 +700,10 @@
     IPPeerNextHop<A>* find_or_create_peer_nexthop(const A& addr);
 
     /**
-     * not implemented - force use of default copy constuctor to fail.
-     */
-    RIB(const RIB& );
-
-    /**
-     * not implemented - force use of default assignment operator to fail.
-     */
-    RIB& operator=(const RIB& );
-
-    /**
      * Flush out routing table changes to other processes.
      */
     void flush();
 
-
 protected:
     RibManager&		_rib_manager;
     EventLoop&		_eventloop;

Modified: trunk/xorp/rib/rt_tab_redist.hh
===================================================================
--- trunk/xorp/rib/rt_tab_redist.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rib/rt_tab_redist.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -22,6 +22,8 @@
 #ifndef __RIB_RT_TAB_REDIST_HH__
 #define __RIB_RT_TAB_REDIST_HH__
 
+#include <boost/noncopyable.hpp>
+
 #include "rt_tab_base.hh"
 
 template <typename A>
@@ -141,7 +143,8 @@
  * associated with it.
  */
 template <typename A>
-class Redistributor
+class Redistributor :
+    public boost::noncopyable
 {
 public:
     class RedistEventInterface {
@@ -249,10 +252,6 @@
     RedistOutput<A>* output()			{ return _output; }
 
 private:
-    // The following are not implemented
-    Redistributor(const Redistributor<A>&);
-    Redistributor<A>& operator=(const Redistributor<A>&);
-
     // These are nested classes and need to be friends to invoke methods in
     // enclosing class.
     friend class RedistEventInterface;
@@ -282,7 +281,8 @@
  * Base class for propagaing output of route add and delete messages.
  */
 template <typename A>
-class RedistOutput
+class RedistOutput :
+    public boost::noncopyable
 {
 public:
     RedistOutput(Redistributor<A>* r);
@@ -311,11 +311,6 @@
     void announce_fatal_error()		{ _r->output_event().fatal_error(); }
 
 private:
-    // The following are not implemented
-    RedistOutput(const RedistOutput<A>&);
-    RedistOutput<A>& operator=(const RedistOutput<A>&);
-
-private:
     Redistributor<A>* _r;
 };
 

Modified: trunk/xorp/rip/output.hh
===================================================================
--- trunk/xorp/rip/output.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rip/output.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -30,6 +30,8 @@
 #include "libxorp/debug.h"
 #include "libxorp/eventloop.hh"
 
+#include <boost/noncopyable.hpp>
+
 #include "policy/backend/policy_filters.hh"
 
 #include "port.hh"
@@ -49,7 +51,9 @@
  * packets.  Timers elsewhere schedule the start of each packet train.
  */
 template <typename A>
-class OutputBase {
+class OutputBase :
+    public boost::noncopyable
+{
 public:
     typedef A		Addr;
     typedef IPNet<A>	Net;
@@ -133,10 +137,6 @@
      */
     bool do_filtering(RouteEntry<A>* r);
 
-private:
-    OutputBase(const OutputBase<A>& o);			// Not implemented
-    OutputBase<A>& operator=(const OutputBase<A>& o);	// Not implemented
-
 protected:
     EventLoop&		_e;
     Port<A>&		_port;	    // Port associated with output

Modified: trunk/xorp/rip/output_table.hh
===================================================================
--- trunk/xorp/rip/output_table.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rip/output_table.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -35,9 +35,11 @@
  * intended use is for solicited and unsolicited routing table.
  *
  * Specialized implementations exist for IPv4 and IPv6.
+ * Non-copyable due to inheritance from OutputBase<A>.
  */
 template <typename A>
-class OutputTable : public OutputBase<A>
+class OutputTable :
+    public OutputBase<A>
 {
 public:
     OutputTable(EventLoop&	e,
@@ -52,16 +54,10 @@
 
 protected:
     void output_packet();
-
     void start_output_processing();
-
     void stop_output_processing();
 
 private:
-    OutputTable(const OutputTable<A>& o);		// Not implemented
-    OutputTable<A>& operator=(const OutputTable<A>& o);	// Not implemented
-
-private:
     RouteWalker<A>	_rw;		// RouteWalker
     bool		_rw_valid;	// RouteWalker is valid (no reset req).
 };

Modified: trunk/xorp/rip/output_updates.hh
===================================================================
--- trunk/xorp/rip/output_updates.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rip/output_updates.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -36,9 +36,11 @@
  * triggered update packets.
  *
  * Specialized implementations exist for IPv4 and IPv6.
+ * Non-copyable due to inheritance from OutputBase<A>.
  */
 template <typename A>
-class OutputUpdates : public OutputBase<A>
+class OutputUpdates :
+    public OutputBase<A>
 {
 public:
     OutputUpdates(EventLoop&	  e,
@@ -68,10 +70,6 @@
     void stop_output_processing();
 
 private:
-    OutputUpdates(const OutputUpdates<A>& o);		    // Not implemented
-    OutputUpdates<A>& operator=(const OutputUpdates<A>& o); // Not implemented
-
-private:
     UpdateQueue<A>&		 	  _uq;
     typename UpdateQueue<A>::ReadIterator _uq_iter;
 };

Modified: trunk/xorp/rip/redist.hh
===================================================================
--- trunk/xorp/rip/redist.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rip/redist.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -41,9 +41,12 @@
  * associated with them.  set_allow_timers() is called when the
  * RedistTable is going to be withdrawn.  This allows routes to be
  * advertised as unreachable via host before they are deleted.
+ *
+ * Non-copyable due to inheritance from RouteEntryOrigin<A>.
  */
 template <typename A>
-class RedistRouteOrigin : public RouteEntryOrigin<A>
+class RedistRouteOrigin :
+    public RouteEntryOrigin<A>
 {
 public:
     RedistRouteOrigin() : RouteEntryOrigin<A>(true) {}
@@ -61,10 +64,6 @@
      * expiry.
      */
     uint32_t deletion_secs() const;
-
-private:
-    RedistRouteOrigin(const RedistRouteOrigin&);		// not impl
-    RedistRouteOrigin& operator=(const RedistRouteOrigin&);	// not impl
 };
 
 
@@ -72,7 +71,9 @@
  * @short Store for redistributed routes.
  */
 template <typename A>
-class RouteRedistributor {
+class RouteRedistributor :
+    public boost::noncopyable
+{
 public:
     typedef A Addr;
     typedef IPNet<A> Net;
@@ -137,9 +138,6 @@
     bool withdrawing_routes() const;
 
 private:
-    RouteRedistributor(const RouteRedistributor& );		// not impl
-    RouteRedistributor& operator=(const RouteRedistributor& );	// not impl
-
     /**
      * Periodic timer callback for withdrawing a batch of routes.  The timer
      * is triggered by @ref withdraw_routes().

Modified: trunk/xorp/rip/route_db.hh
===================================================================
--- trunk/xorp/rip/route_db.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rip/route_db.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -27,6 +27,7 @@
 #include "libxorp/ref_ptr.hh"
 
 #include <map>
+#include <boost/noncopyable.hpp>
 
 #include "policy/backend/policy_filters.hh"
 
@@ -69,7 +70,9 @@
  * The @ref RouteWalker class provides a way to walk the routes held.
  */
 template <typename A>
-class RouteDB {
+class RouteDB :
+    public boost::noncopyable
+{
 public:
     typedef A					Addr;
     typedef IPNet<A> 				Net;
@@ -215,9 +218,6 @@
     Trace& trace() { return _trace; }
 
 protected:
-    RouteDB(const RouteDB&);			// not implemented
-    RouteDB& operator=(const RouteDB&);		// not implemented
-
     void expire_route(Route* r);
     void set_expiry_timer(Route* r);
 
@@ -262,7 +262,8 @@
  * expensive.
  */
 template <typename A>
-class RouteWalker
+class RouteWalker :
+    public boost::noncopyable
 {
 public:
     typedef A			  		Addr;
@@ -326,10 +327,6 @@
      */
     void reset();
 
-protected:
-    RouteWalker(const RouteWalker&);				// Not impl
-    RouteWalker& operator=(const RouteWalker&);			// Not impl
-
 private:
     static const Net NO_NET;
 

Modified: trunk/xorp/rip/route_entry.hh
===================================================================
--- trunk/xorp/rip/route_entry.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rip/route_entry.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -27,11 +27,11 @@
 #include "libxorp/ipnet.hh"
 #include "libxorp/timer.hh"
 
+#include <boost/noncopyable.hpp>
+
 #include "policy/backend/policytags.hh"
 
-
 template<typename A> class RouteEntryOrigin;
-
 template<typename A> class RouteEntryRef;
 
 /**
@@ -42,7 +42,9 @@
  * Only IPv4 and IPv6 types may be supplied.
  */
 template<typename A>
-class RouteEntry {
+class RouteEntry :
+    public boost::noncopyable
+{
 public:
     typedef A Addr;
     typedef IPNet<A> Net;
@@ -231,13 +233,9 @@
     uint16_t ref_cnt() const		{ return _ref_cnt; }
 
 protected:
-    RouteEntry(const RouteEntry&);			// Not implemented.
-    RouteEntry& operator=(const RouteEntry&);		// Not implemented.
-
     void dissociate();
     void associate(Origin* o);
 
-
 protected:
     Net		_net;
     Addr	_nh;
@@ -308,7 +306,9 @@
  * Only IPv4 and IPv6 types may be supplied.
  */
 template <typename A>
-class RouteEntryOrigin {
+class RouteEntryOrigin :
+    public boost::noncopyable
+{
 public:
     typedef RouteEntry<A> Route;
     typedef IPNet<A>	  Net;
@@ -374,10 +374,6 @@
      */
     virtual uint32_t deletion_secs() const = 0;
 
-private:
-    RouteEntryOrigin(const RouteEntryOrigin& reo);		// Not impl
-    RouteEntryOrigin& operator=(const RouteEntryOrigin&);	// Not impl
-
 protected:
     struct RouteEntryStore* _rtstore;
 

Modified: trunk/xorp/rip/system.hh
===================================================================
--- trunk/xorp/rip/system.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rip/system.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -24,6 +24,8 @@
 #define __RIP_SYSTEM_HH__
 
 #include <map>
+#include <boost/noncopyable.hpp>
+
 #include "trace.hh"
 #include "route_db.hh"
 #include "port_manager.hh"
@@ -34,7 +36,9 @@
  * @short Top Level container for XORP RIP implementation.
  */
 template <typename A>
-class System {
+class System :
+    public boost::noncopyable
+{
 public:
     typedef RouteDB<A>		RouteDatabase;
     typedef PortManagerBase<A>	PortManager;
@@ -121,10 +125,6 @@
     Trace& route_trace() { return _rtdb.trace(); }
 
 protected:
-    System(const System&);				// Not implemented
-    System& operator=(const System&);			// Not implemented
-
-protected:
     EventLoop&		_e;
 
     //

Modified: trunk/xorp/rip/tools/common.hh
===================================================================
--- trunk/xorp/rip/tools/common.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rip/tools/common.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -114,8 +114,11 @@
 /**
  * Base class for Xrl Jobs that are invoked by classes derived
  * from XrlJobQueue.
+ * Non-copyable due to inheriting from CallbackSafeObject.
  */
-class XrlJobBase : public CallbackSafeObject {
+class XrlJobBase :
+    public CallbackSafeObject
+{
 public:
     XrlJobBase(XrlJobQueue& q) : _q(q) {}
 
@@ -126,10 +129,6 @@
     XrlJobQueue& queue() { return _q; }
 
 private:
-    XrlJobBase(const XrlJobBase&);		// Not implemented
-    XrlJobBase& operator=(const XrlJobBase&);	// Not implemented
-
-private:
     XrlJobQueue& _q;
 };
 

Modified: trunk/xorp/rip/xrl_port_manager.hh
===================================================================
--- trunk/xorp/rip/xrl_port_manager.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rip/xrl_port_manager.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -22,6 +22,8 @@
 #ifndef __RIP_XRL_PORT_MANAGER_HH__
 #define __RIP_XRL_PORT_MANAGER_HH__
 
+#include <boost/noncopyable.hpp>
+
 #include "libxorp/service.hh"
 #include "libfeaclient/ifmgr_xrl_mirror.hh"
 #include "port_manager.hh"
@@ -43,11 +45,12 @@
  * appropriate @ref XrlPortIO object.
  */
 template <typename A>
-class XrlPortManager
-    : public PortManagerBase<A>,
-      public IfMgrHintObserver,
-      public ServiceBase,
-      public ServiceChangeObserverBase
+class XrlPortManager :
+    public boost::noncopyable,
+    public PortManagerBase<A>,
+    public IfMgrHintObserver,
+    public ServiceBase,
+    public ServiceChangeObserverBase
 {
 public:
     XrlPortManager(System<A>& 		system,
@@ -196,10 +199,6 @@
     //
     void try_start_next_io_handler();
 
-private:
-    XrlPortManager(const XrlPortManager&);		// not implemented
-    XrlPortManager& operator=(const XrlPortManager&);	// not implemented
-
 protected:
     XrlRouter& 				_xr;	// XrlRouter
     IfMgrXrlMirror& 			_ifm;	// Interface Mirror

Modified: trunk/xorp/rtrmgr/op_commands.hh
===================================================================
--- trunk/xorp/rtrmgr/op_commands.hh	2009-12-03 21:58:20 UTC (rev 11661)
+++ trunk/xorp/rtrmgr/op_commands.hh	2009-12-03 22:10:51 UTC (rev 11662)
@@ -31,6 +31,7 @@
 #include "cli.hh"
 #include "rtrmgr_error.hh"
 
+#include <boost/noncopyable.hpp>
 
 class ConfigTree;
 class OpCommand;
@@ -38,7 +39,9 @@
 class TemplateTree;
 class SlaveModuleManager;
 
-class OpInstance {
+class OpInstance :
+    public boost::noncopyable
+{
 public:
     OpInstance(EventLoop&			eventloop,
 	       OpCommand&			op_command,
@@ -59,9 +62,6 @@
     void terminate_with_prejudice();
 
 private:
-    OpInstance(const OpInstance&);		// Not implemented
-    OpInstance& operator=(const OpInstance&);	// Not implemented
-
     void stdout_cb(RunCommand* run_command, const string& output);
     void stderr_cb(RunCommand* run_command, const string& output);
     void done_cb(RunCommand* run_command, bool success,


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Xorp-cvs mailing list