使用OVS

创建节点:

需要在组件上引用OVS组件WDR_OVS:引用后需要更改添加节点属性值如下:

布局如下:

在view中也添加ovs组件

新建事件方法:

ON_EVENT

代码如下:

METHOD on_event.
  TYPES:
  BEGIN OF lty_stru_input,
    carrid TYPE string,
    connid TYPE string,
    END OF lty_stru_input.
  TYPES: BEGIN OF lty_stru_list,
    carrid TYPE string,
    connid TYPE string,
    text TYPE string,
    END OF lty_stru_list.

  DATA: ls_search_input TYPE lty_stru_input,
        lt_select_list TYPE STANDARD TABLE OF lty_stru_list,
        ls_text TYPE wdr_name_value,
        lt_label_texts TYPE wdr_name_value_list,
        lt_column_texts TYPE wdr_name_value_list,
        lv_window_title TYPE string,
        lv_group_header TYPE string,
        lv_table_header TYPE string.
  FIELD-SYMBOLS: <ls_query_params> TYPE lty_stru_input,
                 <ls_selection> TYPE lty_stru_list.
  DATA:lw_carrid TYPE string,
        lw_connid TYPE string.
  CASE ovs_callback_object->phase_indicator.
    WHEN if_wd_ovs=>co_phase_0.
      ls_text-name = ‘CARRID‘.
      ls_text-value = ‘Search Field-Carrid‘.
      INSERT ls_text INTO TABLE lt_label_texts.
      ls_text-name = ‘CONNID‘.
      ls_text-value = ‘Search Field-Connid‘.
      INSERT ls_text INTO TABLE lt_label_texts.
      ls_text-name = ‘CARRID‘.
      ls_text-value = ‘Result-Carrid‘.
      INSERT ls_text INTO TABLE lt_column_texts.
      ls_text-name = ‘CONNID‘.
      ls_text-value = ‘Result-Connid‘.
      INSERT ls_text INTO TABLE lt_column_texts.
      ls_text-name = ‘TEXT‘.
      ls_text-value = ‘Result-Text‘.
      INSERT ls_text INTO TABLE lt_column_texts.
      lv_group_header = ‘Group Header‘.
      lv_window_title = ‘Window Title‘.
      lv_table_header = ‘Table Header‘.
      ovs_callback_object->set_configuration(
      label_texts = lt_label_texts
      column_texts = lt_column_texts
      group_header = lv_group_header
      window_title = lv_window_title
      table_header = lv_table_header
      col_count = 3
      row_count = 8 ).
    WHEN if_wd_ovs=>co_phase_1.
      ovs_callback_object->context_element->get_static_attributes(
      IMPORTING static_attributes = ls_search_input ).
      ovs_callback_object->set_input_structure(
      input = ls_search_input ).
    WHEN if_wd_ovs=>co_phase_2.
      IF ovs_callback_object->query_parameters IS NOT BOUND.
      ENDIF.
      ASSIGN ovs_callback_object->query_parameters->*
      TO <ls_query_params>.
      IF NOT <ls_query_params> IS ASSIGNED.
      ENDIF.
      lw_carrid = <ls_query_params>-carrid.
      lw_connid = <ls_query_params>-connid.
      REPLACE ALL OCCURRENCES OF ‘*‘ IN lw_carrid WITH ‘%‘ .
      REPLACE ALL OCCURRENCES OF ‘*‘ IN lw_connid WITH ‘%‘ .
      IF lw_carrid IS NOT INITIAL AND lw_connid IS NOT INITIAL.
        SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_select_list FROM SFLIGHT
          WHERE carrid LIKE lw_carrid
          AND connid LIKE lw_connid.
      ENDIF.
      IF lw_carrid IS INITIAL AND lw_connid IS NOT INITIAL.
        SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_select_list FROM SFLIGHT
          WHERE connid LIKE lw_connid.
      ENDIF.
      IF lw_carrid IS NOT INITIAL AND lw_connid IS INITIAL.
        SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_select_list FROM SFLIGHT
          WHERE carrid LIKE lw_carrid .
      ENDIF.
      ovs_callback_object->set_output_table( output = lt_select_list ).
    WHEN if_wd_ovs=>co_phase_3.
      IF ovs_callback_object->selection IS NOT BOUND.
      ENDIF.
      ASSIGN ovs_callback_object->selection->* TO <ls_selection>.
      IF <ls_selection> IS ASSIGNED.
        ovs_callback_object->context_element->set_attribute(
        name = ‘CARRID‘
        value = <ls_selection>-carrid ).
        ovs_callback_object->context_element->set_attribute(
        name = ‘CONNID‘
        value = <ls_selection>-connid ).
      ENDIF.
  ENDCASE.
ENDMETHOD.
时间: 2024-12-30 04:02:37

使用OVS的相关文章

OVS的初始配置

1.去掉bridge模块,为下面用OVS的模块奠定基础 rmmod bridge 2.insmod datapath/linux/openvswitch_mod.ko 3.insmod datapath/linux/brcompat_mod.ko 4.nkdir -p /usr/local/etc/openvswitch OVS的初始配置,布布扣,bubuko.com

OVS处理upcall过程分析

处理upcall的整体框架是: 1.由函数handle_upcalls()批量处理(in batches)的是由内核传上来的dpif_upcalls,会解析出upcall的类型.这里主要看在内核中匹配流表失败的MISS_UPCALL.处理完成后会得到多个flow_miss. 结构体dpif_upcall代表的是由内核传到用户空间的一个包,包括上传原因,packet data,以及以netlink attr形式存在的键值. struct dpif_upcall { /* All types. */

OVS中arp响应的流表的实现

总结: 1.br-int 流表总体是按照Normal 的方式,即常规的交换机的转发方式进行转发.而br-tun 交换机则主要按照流表的方式进行转发. 2.一般情况下,VM发出的ARP请求,会在该VM的所有邻居进行广播发送和查找,大量浪费带宽.当neutron开启了l2 pop后(二次注入功能), 计算节点会学习别的主机发送的免费ARP, 从而在本地存在ARP表项. 3.当本地的VM发出ARP请求时,br-tun交换机会优先查找本地的ARP表项,从而对报文进行ARP应答. 这样的话,就不用发出AR

openVswitch(OVS)源码分析之工作流程(哈希桶结构体的解释)

这篇blog是专门解决前篇openVswitch(OVS)源码分析之工作流程(哈希桶结构体的疑惑)中提到的哈希桶结构flex_array结构体成员变量含义的问题. 引用下前篇blog中分析讨论得到的flex_array结构体成员变量的含义结论: struct { int element_size; // 这是flex_array_part结构体存放的哈希头指针的大小 int total_nr_elements; // 这是全部flex_array_part结构体中的哈希头指针的总个数 int e

创建 OVS 外部网络 ext_net - 每天5分钟玩转 OpenStack(144)

上一节完成连接外网的配置准备工作,今天就来创建 OVS 外部网络 ext_net. 进入 Admin -> Networks 菜单,点击 "Create Network" 按钮. 显示创建页面. Provider Network Type 选择 "Flat". Network 填写 "external",与 ml2_conf.ini 中 flat_networks 的参数值保持一致. 勾选 External Network 选择框. 点击

OVS+Docker网络打通

1. 机器列表 主机名 IP docker0 IP docker容器IPnode101 192.168.80.101 10.1.1.1/24 10.1.1.2/24node102 192.168.80.102 20.1.1.1/24 20.1.1.2/24 2. 网络示意图 3. rpm制作mkdir -p ~/rpmbuild/SOURCEScp openvswitch-2.5.0.tar.gz ~/rpmbuild/SOURCES 使用源码包中的SPEC文件制作rpm安装包tar -xf o

OpenVswitch(OVS)源代码分析之简介

云计算是现在IT行业比较流行的,但真正什么是云计算业界也没有个什么统一的定义(很多公司都是根据自己的利益狭隘的定义云计算),更别说什么标准规范了.所以现在就有很多人说云计算只不过是个幌子,是个嘘头,没点实用的,嘴上说说而已,虽然我也不太清楚什么叫做云计算,云计算的定义究竟是什么,但我根据我公司现在做的云计算产品来说,对于云计算服务还是懂些的.我觉得那并不是什么幌子.嘘头,但如果说这云计算技术还不太成熟,我倒还勉强认可的.若把云计算比作一个人的话,我个人觉得现在它正是二十岁的样子,到三十多岁就算是

OVS中对于用户层和datapath层的多个通道利用epoll进行控制

这里先暂时记录下代码流程,有待完善. static int construct(struct ofproto *ofproto_) { struct ofproto_dpif *ofproto = ofproto_dpif_cast(ofproto_); const char *name = ofproto->up.name; int max_ports; int error; int i; error = dpif_create_and_open(name, ofproto->up.type

OVS常用操作「转」

原文地址:http://www.cnblogs.com/puremans/p/6562392.html OVS常用操作: 1.添加网桥:ovs-vsctl add-br 交换机名 2.删除网桥:ovs-vsctl del-br 交换机名 3.添加端口:ovs-vsctl add-port 交换机名 端口名(网卡名) 4.删除端口:ovs-vsctl del-port 交换机名 端口名(网卡名) 5.连接控制器:ovs-vsctl set-controller 交换机名 tcp:IP地址:端口号 

WDA基础十:OVS搜索帮助的使用

对于WDA来说,常用的搜索帮助有OVS,标准SH,Interface view等.今天来说说两种常用的OVS的使用: 一:普通字段,表字段的搜索帮助(在创建节点的时候指定搜索帮助OVS,或者后面加上去) 1.创建WDA程序,双击程序组件,在使用组件界面添加OVS组件,如下图: OVS组件名可随意定义,组件选择WDR_OVS,保存激活整个程序. 2.在需要使用的视图中,添加步骤1中定义的OVS组件:双击视图,在视图属性页签,点击新建将1中的组件添加进视图中. 定义的OVS会生成两个组件都添加进视图