X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fvconn.h;h=8e321b282adffe17fb0b947a3ca51632ea2d7f4a;hb=4b9fd100e8dbd3d7c2945d2916d563b5d703cdae;hp=1426c1d840b3947601971f8867cff1c54d668e4e;hpb=a0bc29a541fc7dc6e20137d5558e2094d614e6ab;p=sliver-openvswitch.git diff --git a/lib/vconn.h b/lib/vconn.h index 1426c1d84..8e321b282 100644 --- a/lib/vconn.h +++ b/lib/vconn.h @@ -24,6 +24,7 @@ #include "flow.h" +struct list; struct ofpbuf; struct ofp_action_header; struct ofp_header; @@ -39,15 +40,18 @@ int vconn_verify_name(const char *name); int vconn_open(const char *name, int min_version, struct vconn **); void vconn_close(struct vconn *); const char *vconn_get_name(const struct vconn *); -uint32_t vconn_get_remote_ip(const struct vconn *); -uint16_t vconn_get_remote_port(const struct vconn *); -uint32_t vconn_get_local_ip(const struct vconn *); -uint16_t vconn_get_local_port(const struct vconn *); +ovs_be32 vconn_get_remote_ip(const struct vconn *); +ovs_be16 vconn_get_remote_port(const struct vconn *); +ovs_be32 vconn_get_local_ip(const struct vconn *); +ovs_be16 vconn_get_local_port(const struct vconn *); int vconn_connect(struct vconn *); int vconn_recv(struct vconn *, struct ofpbuf **); int vconn_send(struct vconn *, struct ofpbuf *); int vconn_recv_xid(struct vconn *, uint32_t xid, struct ofpbuf **); int vconn_transact(struct vconn *, struct ofpbuf *, struct ofpbuf **); +int vconn_transact_noreply(struct vconn *, struct ofpbuf *, struct ofpbuf **); +int vconn_transact_multiple_noreply(struct vconn *, struct list *requests, + struct ofpbuf **replyp); void vconn_run(struct vconn *); void vconn_run_wait(struct vconn *); @@ -74,66 +78,4 @@ void pvconn_close(struct pvconn *); int pvconn_accept(struct pvconn *, int min_version, struct vconn **); void pvconn_wait(struct pvconn *); -/* OpenFlow protocol utility functions. */ -void *make_openflow(size_t openflow_len, uint8_t type, struct ofpbuf **); -void *make_openflow_xid(size_t openflow_len, uint8_t type, - uint32_t xid, struct ofpbuf **); -void *put_openflow(size_t openflow_len, uint8_t type, struct ofpbuf *); -void *put_openflow_xid(size_t openflow_len, uint8_t type, uint32_t xid, - struct ofpbuf *); -void update_openflow_length(struct ofpbuf *); -struct ofpbuf *make_flow_mod(uint16_t command, const flow_t *, - size_t actions_len); -struct ofpbuf *make_add_flow(const flow_t *, uint32_t buffer_id, - uint16_t max_idle, size_t actions_len); -struct ofpbuf *make_del_flow(const flow_t *); -struct ofpbuf *make_add_simple_flow(const flow_t *, - uint32_t buffer_id, uint16_t out_port, - uint16_t max_idle); -struct ofpbuf *make_packet_in(uint32_t buffer_id, uint16_t in_port, - uint8_t reason, - const struct ofpbuf *payload, int max_send_len); -struct ofpbuf *make_packet_out(const struct ofpbuf *packet, uint32_t buffer_id, - uint16_t in_port, - const struct ofp_action_header *, - size_t n_actions); -struct ofpbuf *make_buffered_packet_out(uint32_t buffer_id, - uint16_t in_port, uint16_t out_port); -struct ofpbuf *make_unbuffered_packet_out(const struct ofpbuf *packet, - uint16_t in_port, uint16_t out_port); -struct ofpbuf *make_echo_request(void); -struct ofpbuf *make_echo_reply(const struct ofp_header *rq); -int check_ofp_message(const struct ofp_header *, uint8_t type, size_t size); -int check_ofp_message_array(const struct ofp_header *, uint8_t type, - size_t size, size_t array_elt_size, - size_t *n_array_elts); -int check_ofp_packet_out(const struct ofp_header *, struct ofpbuf *data, - int *n_actions, int max_ports); - -struct flow_stats_iterator { - const uint8_t *pos, *end; -}; -const struct ofp_flow_stats *flow_stats_first(struct flow_stats_iterator *, - const struct ofp_stats_reply *); -const struct ofp_flow_stats *flow_stats_next(struct flow_stats_iterator *); - -struct actions_iterator { - const union ofp_action *pos, *end; -}; -const union ofp_action *actions_first(struct actions_iterator *, - const union ofp_action *, - size_t n_actions); -const union ofp_action *actions_next(struct actions_iterator *); -int validate_actions(const union ofp_action *, size_t n_actions, - int max_ports); - -void normalize_match(struct ofp_match *); - -static inline int -ofp_mkerr(uint16_t type, uint16_t code) -{ - assert(type > 0 && type <= 0x7fff); - return (type << 16) | code; -} - #endif /* vconn.h */